updated sysfunc.txt
*programs
new icons and logo for CPUID and ICON
added new version of @ICON and ICONMNGR
fixes in iconedit and calendar from DedOK
new algoritm of fill background in pic4
all apps (fasm-writen only) rewriten to use common macros.inc for easy recompile in fastcall mode (there is a bug in https; run need rewrite to use common macros.inc)
small fixes in build_all.bat script
git-svn-id: svn://kolibrios.org@485 a494cfbc-eb01-0410-851d-a64ba20cac60
123 lines
5.5 KiB
FASM
123 lines
5.5 KiB
FASM
;Оптимизированный компонент CheckBox (Исходный вариант от Maxxxx32)
|
||
;Оптимизирован вывод строки, надписи для CheckBox'a + теперь при проверке не ;происходит подсчет кол-ва символов в строке
|
||
;Оптимизация команд.
|
||
;21.02.2007 модернизация и поддержка двух разных вариантов с использованием сис цветов и старой схемой
|
||
;19.02.2007 общее улучшение кода, уменьшение размера и использование системных цветов для отображения checkbox
|
||
;22.08.2006 произведена оптимизация команд, приняты во внимание замечания DIAMOND'а.
|
||
;<Lrz> - Теплов Алексей www.lrz.land.ru
|
||
|
||
;заголовок приложения
|
||
use32 ; транслятор, использующий 32 разрядных команды
|
||
org 0x0 ; базовый адрес кода, всегда 0x0
|
||
db 'MENUET01' ; идентификатор исполняемого файла (8 байт)
|
||
dd 0x1 ; версия формата заголовка исполняемого файла
|
||
dd start ; адрес, на который система передаёт управление
|
||
; после загрузки приложения в память
|
||
dd i_end ; размер приложения
|
||
dd (i_end+0x100) and not 3 ; Объем используемой памяти, для стека отведем 0х100 байт и выровним на грницу 4 байта
|
||
dd (i_end+0x100) and not 3 ; расположим позицию стека в области памяти, сразу за телом программы. Вершина стека в диапазоне памяти, указанном выше
|
||
dd 0x0,0x0 ; указатель на строку с параметрами.
|
||
; если после запуска неравно нулю, приложение было
|
||
; запущено с параметрами из командной строки
|
||
|
||
; указатель на строку, в которую записан путь,
|
||
; откуда запущено приложение
|
||
;------------------
|
||
include '..\..\..\..\macros.inc'
|
||
include 'check.inc' ;включить файл check.inc
|
||
; version_ch ;необходимый макрос для включения "старой" версии check_box
|
||
version_ch1 ;необходимый макрос для включения new версии check_box1
|
||
;Недопустимо включение двух макросво version_ch1 и version_ch - они взамоисключают друг- дргуга.
|
||
use_check_box ;используя макросы внести процедуры для рисования чек бокса
|
||
;Область кода
|
||
align 4
|
||
start: ;Точка входа в программу
|
||
mov eax,48 ;получить системные цвета
|
||
mov ebx,3
|
||
mov ecx,sc
|
||
mov edx,sizeof.system_colors
|
||
mcall
|
||
|
||
mov eax,40 ;установить маску для ожидаемых событий
|
||
mov ebx,0x25 ;система будет реагировать только на сообщение о перерисовке,нажата кнопка, определённая ранее, событие от мыши (что-то случилось - нажатие на кнопку мыши или перемещение; сбрасывается при прочтении)
|
||
mcall
|
||
red_win:
|
||
call draw_window ;первоначально необходимо нарисовать окно
|
||
still: ;основной обработчик
|
||
mov eax,10 ;Ожидать события
|
||
mcall ;ожидать событие в течение 2 миллисекунд
|
||
|
||
cmp al,0x1 ;если изменилось положение окна
|
||
jz red_win
|
||
cmp al,0x3 ;если нажата кнопка то перейти
|
||
jz button
|
||
mouse_check_boxes check_boxes,check_boxes_end ;проверка чек бокса
|
||
jmp still ;если ничего из перечисленного то снова в цикл
|
||
button:
|
||
or eax,-1 ;в eax,-1 - 5 ,байтов у нас же только 3 выйти
|
||
mcall ;далее выполняется выход из программы
|
||
|
||
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||
draw_window: ;рисование окна приложения
|
||
mov eax,12 ;в регистр внести значение = 12
|
||
mov ebx,1 ;присвоить 1
|
||
mcall
|
||
|
||
xor eax,eax ;обнулить eax
|
||
mov ebx,50*65536+180 ;[координата по оси x]*65536 + [размер по оси x]
|
||
mov ecx,30*65536+100 ;[координата по оси y]*65536 + [размер по оси y]
|
||
mov edx,[sc.work] ; color of work area RRGGBB,8->color gl
|
||
or edx,0xb3000000
|
||
mov edi,hed
|
||
mcall ;нарисовать окно приложения
|
||
|
||
draw_check_boxes check_boxes,check_boxes_end ;рисование чекбоксов
|
||
|
||
mov eax,12 ;Функция 12 - начать/закончить перерисовку окна.
|
||
mov ebx,2 ;Подфункция 2 - закончить перерисовку окна.
|
||
mcall
|
||
ret
|
||
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||
;DATA данные
|
||
;Формат данных чек бокса:
|
||
;10 - координата чек бокса по х
|
||
;30 - координата чек бокса по у
|
||
;0 - цвет заливки внутри чек бокса
|
||
;0xfffffff - цвет рамки чек бокса если нужно так используются ситемные цвета
|
||
;0 - цвет текста надписи если нужно так используются ситемные цвета
|
||
;ch_text.1 - указатель на начало строки
|
||
;ch_text.e1-ch_text.1 - длина строки
|
||
;
|
||
align 4
|
||
check_boxes:
|
||
;ch1 check_box 10,15,0xffffff,0,0,ch_text.1,ch_text.e1-ch_text.1,ch_flag_en
|
||
;ch2 check_box 10,30,0xffffff,0,0,ch_text.2,ch_text.e2-ch_text.2
|
||
;ch3 check_box 10,45,0xffffff,0,0,ch_text.3,ch_text.e3-ch_text.3
|
||
|
||
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||
;DATA данные для check_box1 - использует системные цвета
|
||
;Формат данных чек бокса:
|
||
;10 - координата чек бокса по х
|
||
;30 - координата чек бокса по у
|
||
;ch_text.1 - указатель на начало строки
|
||
;ch_text.e1-ch_text.1 - длина строки
|
||
|
||
;
|
||
ch1 check_box1 10,15,ch_text.1,ch_text.e1-ch_text.1,ch_flag_en
|
||
ch2 check_box1 10,30,ch_text.2,ch_text.e2-ch_text.2
|
||
ch3 check_box1 10,45,ch_text.3,ch_text.e3-ch_text.3
|
||
check_boxes_end:
|
||
|
||
ch_text: ;сопровождающий текст для чек боксов
|
||
.1 db 'Check_Box #1'
|
||
.e1:
|
||
.2 db 'Check_Box #2'
|
||
.e2:
|
||
.3 db 'Check_Box #3'
|
||
.e3:
|
||
|
||
hed db 'Checkbox [21.02.2007]',0 ;заголовок приложения
|
||
sc system_colors
|
||
i_end: ;конец кода |