ch_struc_size=36 ed_struc_size=76 ch_flag_en=10b ch_left equ [edi] ;координата начала рисования по х ch_top equ [edi+2] ;координата начала рисования по у ch_text_margin equ [edi+4] ;=4 расстояние от прямоугольника чек бокса до надписи ch_size equ [edi+8] ;12 размер квадрата чек бокса ch_color equ [edi+12] ;цвет внутри checkbox ch_border_color equ [edi+16] ; or [edi+4] ;цвет рамки checkbox ее можно задать самостоятельно ch_text_color equ [edi+20];[edi+4] ;цвет текста ch_text_ptr equ [edi+24] ;указатель на начало текстовой строки ch_text_length equ [edi+28] ch_flags equ [edi+32] ;флаги ed_width equ [edi] ;ширина компонента ed_left equ [edi+4] ;положение по оси х ed_top equ [edi+8] ;положение по оси у ed_color equ [edi+12] ;цвет фона компонента shift_color equ [edi+16] ;=0x6a9480 для примера возьем желеный цвет бокса ed_focus_border_color equ [edi+20] ;цвет рамки компонента ed_blur_border_color equ [edi+24] ;цвет не активного компонента ed_text_color equ [edi+28] ;цвет текста ed_max equ [edi+32] ;кол-во символов которые можно максимально ввести ed_text equ [edi+36] ;указатель на буфер ed_mouse_variable equ [edi+40] ; указатель на переменную для бокса/группы ed_flags equ [edi+44] ;флаги bp_flags equ [ebp+44] ;в некоторых процедурах edi используется, взамен указатель храниться в ebp ed_size equ [edi+48] ;кол-во символов bp_size equ [ebp+48] ;кол-во симвполов, для адресации испльзуется ebpб edi занят ed_pos equ [edi+52] ;позиция курсора ed_offset equ [edi+56] ;смещение cl_curs_x equ [edi+60] ;предыдущее координата курсора по х cl_curs_y equ [edi+64] ;предыдущее координата курсора по у ed_shift_pos equ [edi+68] ;положение курсора ed_shift_pos_old equ [edi+72] ;старое положение курсора ed_struc_size=76 struc edit_box width,left,top,color,shift_color,focus_border_color,\ blur_border_color,text_color,max,text,mouse_variable,flags,size,pos { ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Bit mask from editbox ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ed_figure_only= 1000000000000000b ;одни символы ed_always_focus= 100000000000000b ed_focus= 10b ;фокус приложения ed_shift_on= 1000b ;если не установлен -значит впервые нажат shift,если был установлен, значит мы уже что - то делали удерживая shift ed_shift_on_off=1111111111110111b ed_shift= 100b ;включается при нажатии на shift т.е. если нажимаю ed_shift_off= 1111111111111011b ed_shift_bac= 10000b ;бит для очистки выделеного shift т.е. при установке говорит что есть выделение ed_shift_bac_cl=1111111111101111b ;очистка при удалении выделения ed_shift_cl= 1111111111100011b ed_shift_mcl= 1111111111111011b ed_left_fl= 100000b ed_right_fl= 1111111111011111b ed_offset_fl= 1000000b ed_offset_cl= 1111111110111111b ed_insert= 10000000b ed_insert_cl= 1111111101111111b ed_mouse_on = 100000000b ed_mous_adn_b= 100011000b ed_mouse_on_off=1111111011111111b ed_height=14 ; высота .width dd width .left dd left .top dd top .color dd color .shift_color dd shift_color .focus_border_color dd focus_border_color .blur_border_color dd blur_border_color .text_color dd text_color .max dd max .text dd text .mouse_variable dd mouse_variable .flags dd flags+0 .size dd size+0 .pos dd pos+0 .offset dd 0 .cl_curs_x dd 0 .cl_curs_y dd 0 .shift dd 0 .shift_old dd 0 } macro edit_boxes_set_sys_color start,end,color_table { mov edi,start mov ecx,((end-start)/ed_struc_size) mov esi,color_table @@: mov eax,dword [esi+36] mov ebx,dword [esi+20] push dword eax pop dword ed_focus_border_color shr bh,1 shr bl,1 shr ah,1 shr al,1 add ah,bh add al,bl ror eax,16 ror ebx,16 shr bl,1 shr al,1 add al,bl ror eax,16 mov dword ed_blur_border_color,eax mov dword shift_color,eax add edi,ed_struc_size loop @b } macro get_sys_colors col_buf { ;mov eax,48 push 48 pop eax ;mov ebx,3 push 3 pop ebx ;mov ecx,col_buf push col_buf pop ecx ;mov edx,40 push 40 pop edx mcall } macro check_boxes_set_sys_color start,end,color_table { ch_left equ [edi] ;координата начала рисования по х ch_top equ [edi+2] ;координата начала рисования по у ch_text_margin equ [edi+4] ;=4 расстояние от прямоугольника чек бокса до надписи ch_size equ [edi+8] ;12 размер квадрата чек бокса ch_color equ [edi+12] ;цвет внутри checkbox ch_border_color equ [edi+16] ; or [edi+4] ;цвет рамки checkbox ее можно задать самостоятельно ch_text_color equ [edi+20];[edi+4] ;цвет текста ch_text_ptr equ [edi+24] ;указатель на начало текстовой строки ch_text_length equ [edi+28] ch_flags equ [edi+32] ;флаги ;ch_left equ [edi] ;координата начала рисования по х ;ch_top equ [edi+2] ;координата начала рисования по у ;ch_color equ [edi+4] ;цвет внутри checkbox ;ch_border_color equ [edi+8] ;цвет рамки checkbox ;ch_text_color equ [edi+12] ;цвет текста ;ch_text_ptr equ [edi+16] ;указатель на начало текстовой строки ;ch_text_length equ [edi+20] ;длина надписи (2^64 такой длины может быть текст) ;ch_flags equ [edi+24] ;флаги mov edi,start mov ecx,((end-start)/ch_struc_size) mov esi,color_table @@: push dword [esi+32] pop dword ch_text_color push dword [esi+36] pop dword ch_border_color add edi,ch_struc_size loop @b } struc check_box left,top,ch_text_margin,ch_size,color,border_color,text_color,text,ch_text_length,flags { ;структура параметров для чек бокса ch_flag_en=10b .left: dw left ;+0 ;положение по х .top: dw top ;положение по у .ch_text_margin: dd ch_text_margin ;расстояние от прямоугольника чек бокса до надписи .ch_size: dd ch_size ;размер квадрата чек бокса, для примера 12 .color: dd color ;цвет внутри чекбокса .border_color: dd border_color ;цвет рамки .text_color: dd text_color ;цвет надписи .text: dd text ;адрес в коде программы где расположен текст .ch_text_length: dd ch_text_length ;длинна строки с символами .flags: dd flags+0 ; флаги } struc option_box point_gr,left,top,op_text_margin,op_size,color,border_color,text_color,text,op_text_length,flags { ;структура параметров для чек бокса op_flag_en=10b .option_group: dd point_gr .left: dw left ;+0 ;положение по х .top: dw top ;положение по у .ch_text_margin: dd op_text_margin ;расстояние от прямоугольника чек бокса до надписи .ch_size: dd op_size ;размер квадрата чек бокса, для примера 12 .color: dd color ;цвет внутри чекбокса .border_color: dd border_color ;цвет рамки .text_color: dd text_color ;цвет надписи .text: dd text ;адрес в коде программы где расположен текст .ch_text_length: dd op_text_length ;длинна строки с символами .flags: dd flags+0 ; флаги }