That new in this version:
1) Transfer of parameters to functions of library is copied on the convention stdcall. 2) Now functions link on names. 3)Now, if to guide the mouse on a component and to press the left button of the mouse all messages from the mouse are sent only to this component.If to release(let off) the left button of the mouse messages from the mouse again become accessible to all components. 4) In library new functions are added. int Version (void) - to receive the version of library. The version comes back in a format: year + month + day. The current library has version 71014. void RemoveComponent (void *Control, int new_x, int new_y) - moves a component to new coordinates. void ResizeComponent (void *Control, int new_sizex, int new_sizey) - changes the size of a component. Examples of use of these functions look in example Bookmark. 5) The example of work with libGUI in programming language C is added. This example is a part of the interface written by me for my scientific program. git-svn-id: svn://kolibrios.org@648 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
234
programs/develop/libGUI/src/check_box.inc
Normal file
234
programs/develop/libGUI/src/check_box.inc
Normal file
@@ -0,0 +1,234 @@
|
||||
|
||||
cb_control_data_dize = 44
|
||||
|
||||
;****************************************************
|
||||
;****************craete CheckBox**********************
|
||||
;****************************************************
|
||||
;IN
|
||||
;pointer to parend
|
||||
;pointer to CheckBox's structure
|
||||
;OUT
|
||||
;pointer to initialized control
|
||||
align 4
|
||||
|
||||
craete_check_box:
|
||||
|
||||
mov ebx,[esp+4]
|
||||
mov eax,[esp+8]
|
||||
|
||||
mov [PointerToStructureForCheckBox],eax
|
||||
|
||||
mov eax,control_header_size+cb_control_data_dize
|
||||
call craete_control
|
||||
|
||||
;set all CheckBox's parameters in control
|
||||
mov [eax],dword check_box
|
||||
|
||||
mov ecx,cb_control_data_dize
|
||||
mov esi,[PointerToStructureForCheckBox]
|
||||
mov edi,eax
|
||||
add edi,control_header_size
|
||||
rep movsb
|
||||
|
||||
call get_skin_height
|
||||
|
||||
mov ebx,[PointerToStructureForCheckBox]
|
||||
xor ecx,ecx
|
||||
xor edx,edx
|
||||
mov cx,[ebx+2] ;CheckBox x
|
||||
mov dx,[ebx+4] ;CheckBox y
|
||||
mov esi,[ebx+10] ;CheckBox size
|
||||
add ecx,border_width
|
||||
add edx,[skin_height]
|
||||
;copy information to control
|
||||
mov [eax+24],ecx
|
||||
mov [eax+28],edx
|
||||
mov [eax+32],esi
|
||||
mov [eax+36],esi
|
||||
|
||||
ret 8
|
||||
|
||||
;****************************************************
|
||||
;*****************Draw CheckBox**********************
|
||||
;****************************************************
|
||||
;IN
|
||||
;pointer to control of CheckBox
|
||||
;message
|
||||
;OUT
|
||||
;not returned value
|
||||
align 4
|
||||
|
||||
check_box:
|
||||
|
||||
;get message
|
||||
mov eax,[esp+8]
|
||||
|
||||
;get pointer to control of CheckBox
|
||||
mov esi,[esp+4]
|
||||
mov [PointerForCheckBox],esi
|
||||
|
||||
;copy information from control to structure
|
||||
add esi,control_header_size
|
||||
mov edi,dword CheckBox
|
||||
mov ecx,control_header_size+cb_control_data_dize
|
||||
rep movsb
|
||||
|
||||
push eax
|
||||
;load coordinats and size from control
|
||||
mov eax,[PointerForCheckBox]
|
||||
mov ebx,[eax+24] ;x
|
||||
mov ecx,[eax+28] ;y
|
||||
mov edx,[eax+32] ;size
|
||||
;set current coordinats and sizes in CheckBox
|
||||
mov [CheckBox.ch_left],bx
|
||||
mov [CheckBox.ch_top],cx
|
||||
mov [CheckBox.ch_size],edx
|
||||
pop eax
|
||||
|
||||
cmp [eax],dword 1
|
||||
jne no_redraw_all_check_box
|
||||
|
||||
mov eax,13
|
||||
mov bx,[CheckBox.ch_left]
|
||||
mov cx,[CheckBox.ch_top]
|
||||
shl ebx,16
|
||||
shl ecx,16
|
||||
add ebx,[CheckBox.ch_size]
|
||||
add ecx,[CheckBox.ch_size]
|
||||
mov edx,[CheckBox.ch_border_color]
|
||||
mcall
|
||||
|
||||
mov edx,[CheckBox.ch_color]
|
||||
add ebx,1 shl 16 - 2
|
||||
add ecx,1 shl 16 - 2
|
||||
mcall
|
||||
|
||||
mov eax,[CheckBox.ch_size]
|
||||
mov ebx,eax
|
||||
mov ecx,3
|
||||
shr ebx,1
|
||||
cdq
|
||||
idiv ecx
|
||||
mov [CheckBox.ch_size_2],bx
|
||||
mov [CheckBox.ch_size_3],ax
|
||||
|
||||
test word [CheckBox.ch_flags],2
|
||||
jz @f
|
||||
call draw_ch
|
||||
@@:
|
||||
|
||||
movzx ebx,word[CheckBox.ch_left]
|
||||
add ebx,[CheckBox.ch_size]
|
||||
add ebx,[CheckBox.ch_text_margin]
|
||||
shl ebx,16
|
||||
mov bx,[CheckBox.ch_top]
|
||||
add ebx,[CheckBox.ch_size]
|
||||
add ebx,(-9+1)
|
||||
mov ecx,[CheckBox.ch_text_color]
|
||||
|
||||
mov edx,[CheckBox.ch_text_ptr]
|
||||
movzx esi,word [CheckBox.ch_text_length]
|
||||
|
||||
mov eax,4
|
||||
mcall
|
||||
|
||||
jmp exit_check_box
|
||||
no_redraw_all_check_box:
|
||||
|
||||
|
||||
cmp [eax],dword 6
|
||||
jne no_mouse_check_box
|
||||
|
||||
mov esi,[eax+4]
|
||||
mov edi,[eax+8]
|
||||
mov ebx,[eax+12] ;buttons of mouse state
|
||||
mov [CheckBox.mouseX],esi
|
||||
mov [CheckBox.mouseY],edi
|
||||
mov eax,ebx
|
||||
|
||||
test eax,eax
|
||||
jnz @f
|
||||
btr word [CheckBox.ch_flags],2
|
||||
jmp exit_check_box
|
||||
@@:
|
||||
bts word [CheckBox.ch_flags],2
|
||||
jc .mouse_end
|
||||
movzx esi,word [CheckBox.ch_text_length]
|
||||
|
||||
imul esi,6
|
||||
add esi,[CheckBox.ch_text_margin]
|
||||
|
||||
mov eax,[CheckBox.mouseX]
|
||||
shl eax,16
|
||||
add eax,[CheckBox.mouseY]
|
||||
|
||||
xor ebx,ebx
|
||||
|
||||
movzx ebx,word[CheckBox.ch_top]
|
||||
cmp ax,bx
|
||||
jl .mouse_end
|
||||
add ebx,[CheckBox.ch_size]
|
||||
cmp ax,bx
|
||||
jg .mouse_end
|
||||
|
||||
shr eax,16
|
||||
movzx ebx,word[CheckBox.ch_left]
|
||||
cmp ax,bx
|
||||
jl .mouse_end
|
||||
add ebx,[CheckBox.ch_size]
|
||||
add ebx,esi
|
||||
cmp ax,bx
|
||||
jg .mouse_end
|
||||
|
||||
bts word[CheckBox.ch_flags],1
|
||||
jc @f
|
||||
|
||||
call draw_ch
|
||||
|
||||
jmp .mouse_end
|
||||
@@:
|
||||
btr word[CheckBox.ch_flags],1
|
||||
call clear_ch
|
||||
|
||||
.mouse_end:
|
||||
|
||||
no_mouse_check_box:
|
||||
|
||||
exit_check_box:
|
||||
|
||||
;save resultat of work in control
|
||||
mov ecx,cb_control_data_dize ;save in control only flags
|
||||
mov esi,dword CheckBox
|
||||
mov edi,[PointerForCheckBox]
|
||||
add edi,control_header_size
|
||||
cld
|
||||
rep movsb
|
||||
|
||||
ret 8
|
||||
|
||||
;ch_text_margin=4
|
||||
;ch_size=11
|
||||
|
||||
clear_ch:
|
||||
mov edx,[CheckBox.ch_color]
|
||||
jmp @f
|
||||
|
||||
draw_ch:
|
||||
mov edx,[CheckBox.ch_border_color]
|
||||
@@:
|
||||
|
||||
movzx ebx,word[CheckBox.ch_left]
|
||||
add bx,[CheckBox.ch_size_3]
|
||||
shl ebx,16
|
||||
mov bx,[CheckBox.ch_size_2]
|
||||
;mov bp,bx
|
||||
;push bx
|
||||
movzx ecx,word [CheckBox.ch_top]
|
||||
mov eax,13
|
||||
add cx,[CheckBox.ch_size_3]
|
||||
shl ecx,16
|
||||
;mov cx,bp
|
||||
mov cx,[CheckBox.ch_size_2]
|
||||
mcall
|
||||
|
||||
ret
|
Reference in New Issue
Block a user