Subversion Repositories Kolibri OS

Rev

Rev 1652 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1652 Rev 1657
Line 1... Line 1...
1
;Ïîñëåäíàÿ ìîäèôèêàöèÿ 03.10.2010
1
;Ïîñëåäíàÿ ìîäèôèêàöèÿ 03.10.2010
2
;ôàéë ñîçäàí 13.02.2009  Íà êîä ïðèìåíåíà GPL2 ëèöåíçèÿ
2
;ôàéë ñîçäàí 13.02.2009  Íà êîä ïðèìåíåíà GPL2 ëèöåíçèÿ
3
;Ìàêðîñ äëÿ ñèñòåìíîé áèáëèîòåêè box_lib.obj
3
;Ìàêðîñ äëÿ ñèñòåìíîé áèáëèîòåêè box_lib.obj
4
;Checkbox
4
;Checkbox
Line -... Line 5...
-
 
5
 
-
 
6
;Èíèöèàëèçàöèÿ checkbox
-
 
7
macro _init_checkbox
-
 
8
{
-
 
9
init_checkbox:
-
 
10
;ïîäñ÷èòàåì êîë-âî ñèìâîëîâ â äëèííå âûâîäèìîé ñòðîêè.
-
 
11
	pushad
-
 
12
	mov	ebp,dword [esp+36]	;çàãðóæàåì óêàçàòåëü íà ñòðóêòóðó, óêàçàòåëü ìû ïåðåäàåì â ñòåêå
-
 
13
	mov	ebx,dword ch_text_margin	;eax=0
-
 
14
	mov	esi,dword ch_text_ptr   ;óêàçàòåëü íà ñòðî÷êó
-
 
15
	lodsb	                        ;â al ïåðâûé ñèìâîë èç ñòðîêè
-
 
16
	test	al,al
-
 
17
	jz	.ex_loop
-
 
18
@@:	
-
 
19
	add	ebx,6			;øèðèíà ñèìâîëà
-
 
20
	lodsb
-
 
21
	test	al,al
-
 
22
	jnz	@b
-
 
23
.ex_loop:
-
 
24
 
-
 
25
	mov	dword ch_sz_str,ebx     ;çàïèøèì äëèííó ñòðîêè ñ ó÷åòîì îòñòóïà îò êâàäðàòèêà
-
 
26
	popad
-
 
27
	ret 4
-
 
28
}
5
 
29
 
6
macro use_checkbox_draw
30
macro use_checkbox_draw
7
{
31
{
8
check_box_draw:
32
check_box_draw:
9
	pushad   ;ñîõðàíèì âñå ðåãèñòðû 
33
	pushad   ;ñîõðàíèì âñå ðåãèñòðû 
10
	mov	ebp,dword [esp+36]	;çàãðóæàåì óêàçàòåëü íà ñòðóêòóðó, óêàçàòåëü ìû ïåðåäàåì â ñòåêå
-
 
11
;	mov 	ebx,ch_left_s
-
 
12
;	mov 	ecx,ch_top_s
-
 
13
;	mov 	edx,dword ch_border_color 
-
 
14
;	mov	eax,13
-
 
15
;	mcall 	;ðèñóåì ðàìêó 
34
	mov	ebp,dword [esp+36]	;çàãðóæàåì óêàçàòåëü íà ñòðóêòóðó, óêàçàòåëü ìû ïåðåäàåì â ñòåêå
Line 16... Line 35...
16
	mcall	13,ch_left_s,ch_top_s,ch_border_color		;ðèñóåì ðàìêó ÷åê áîêñà, ôàêòè÷åñêè ðèñóåì ïðÿìîóãîëüíèê è çàêðàøèâàåì ôîí âíóòðè öâåòîì ðàìêè áîêñà
35
	mcall	13,ch_left_s,ch_top_s,ch_border_color		;ðèñóåì ðàìêó ÷åê áîêñà, ôàêòè÷åñêè ðèñóåì ïðÿìîóãîëüíèê è çàêðàøèâàåì ôîí âíóòðè öâåòîì ðàìêè áîêñà
17
 
36
 
18
	mov 	edx,dword ch_color	;çàãðóæàåì öâåò ôîíà
37
	mov 	edx,dword ch_color	;çàãðóæàåì öâåò ôîíà
Line 31... Line 50...
31
;        add	ebx,dword ch_text_margin	;äîáàâèì ðàçìåð ñòîðîíû è ðàññòîÿíèå íà êîòîðîì íà÷íåòñÿ âûâîä òåêñòà
50
;        add	ebx,dword ch_text_margin	;äîáàâèì ðàçìåð ñòîðîíû è ðàññòîÿíèå íà êîòîðîì íà÷íåòñÿ âûâîä òåêñòà
32
;        shl	ebx,16				;ñäâèíåì íà 16 ðàçðÿäîâ â ëåâî (óìíîæèì íà 65536)
51
;        shl	ebx,16				;ñäâèíåì íà 16 ðàçðÿäîâ â ëåâî (óìíîæèì íà 65536)
33
;        add	ebx,dword ch_left_s             ;cêîððåêòèðóåì ïîçèöèþ Õ. Ò.å. ñåé÷àñ â âåðõíåé ÷àñòè ebx ó íàñ òî÷êà íà÷àëà âûâîäà òåêñòà ïî Õ
52
;        add	ebx,dword ch_left_s             ;cêîððåêòèðóåì ïîçèöèþ Õ. Ò.å. ñåé÷àñ â âåðõíåé ÷àñòè ebx ó íàñ òî÷êà íà÷àëà âûâîäà òåêñòà ïî Õ
Line 34... Line 53...
34
 
53
 
35
;        mov	eax,word ch_top_s		;çàãðóçèì çíà÷åíèå ïî (y shl 16 + äëèííà) äëÿ ÷åê áîêñà
54
;        mov	eax,word ch_top_s		;çàãðóçèì çíà÷åíèå ïî (y shl 16 + äëèííà) äëÿ ÷åê áîêñà
36
;        shl	eax,16				;ñäâèíåì íà 16 ðàçðÿäîâ â ëåâî (óìíîæèì íà 65536)
55
;        shr	eax,16				;ñäâèíåì íà 16 ðàçðÿäîâ â ëåâî (óìíîæèì íà 65536)
Line 37... Line 56...
37
;        add	eax,dword ch_top_s		;cêîððåêòèðóåì ïîçèöèþ Õ. Ò.å. ñåé÷àñ â âåðõíåé ÷àñòè ebx ó íàñ òî÷êà íà÷àëà âûâîäà òåêñòà ïî Y
56
;        add	eax,dword ch_top_s		;cêîððåêòèðóåì ïîçèöèþ Õ. Ò.å. ñåé÷àñ â âåðõíåé ÷àñòè ebx ó íàñ òî÷êà íà÷àëà âûâîäà òåêñòà ïî Y
38
	
57
	
39
; Îïòèìèçàöèÿ äëÿ ÖÏ
58
; Îïòèìèçàöèÿ äëÿ ÖÏ
40
	mov 	ebx,dword ch_left_s		;çàãðóçèòü çíà÷åíèå (õ shl 16 + äëèííà)  äëÿ ÷åê áîêñà
59
	mov 	ebx,dword ch_left_s		;çàãðóçèòü çíà÷åíèå (õ shl 16 + äëèííà)  äëÿ ÷åê áîêñà
41
        mov	eax,dword ch_top_s		;çàãðóçèì çíà÷åíèå ïî (y shl 16 + äëèííà) äëÿ ÷åê áîêñà 
60
	mov	eax,dword ch_top_s		;çàãðóçèì çíà÷åíèå ïî (y shl 16 + äëèííà) äëÿ ÷åê áîêñà 
42
        add	ebx,dword ch_text_margin	;äîáàâèì ðàçìåð ñòîðîíû è ðàññòîÿíèå íà êîòîðîì íà÷íåòñÿ âûâîä òåêñòà
61
	add	ebx,dword ch_text_margin	;äîáàâèì ðàçìåð ñòîðîíû è ðàññòîÿíèå íà êîòîðîì íà÷íåòñÿ âûâîä òåêñòà
43
        shl	eax,16				;ñäâèíåì íà 16 ðàçðÿäîâ â ëåâî (óìíîæèì íà 65536)
62
	shr	eax,16				;ñäâèíåì íà 16 ðàçðÿäîâ â ëåâî (óìíîæèì íà 65536)
44
        shl	ebx,16				;ñäâèíåì íà 16 ðàçðÿäîâ â ëåâî (óìíîæèì íà 65536)
63
	shl	ebx,16				;ñäâèíåì íà 16 ðàçðÿäîâ â ëåâî (óìíîæèì íà 65536)
45
        add	eax,dword ch_top_s		;cêîððåêòèðóåì ïîçèöèþ Õ. Ò.å. ñåé÷àñ â âåðõíåé ÷àñòè ebx ó íàñ òî÷êà íà÷àëà âûâîäà òåêñòà ïî Y
64
	add	eax,dword ch_top_s		;cêîððåêòèðóåì ïîçèöèþ Õ. Ò.å. ñåé÷àñ â âåðõíåé ÷àñòè ebx ó íàñ òî÷êà íà÷àëà âûâîäà òåêñòà ïî Y
-
 
65
	add	ebx,dword ch_left_s             ;cêîððåêòèðóåì ïîçèöèþ Õ. Ò.å. ñåé÷àñ â âåðõíåé ÷àñòè ebx ó íàñ òî÷êà íà÷àëà âûâîäà òåêñòà ïî Õ
46
        add	ebx,dword ch_left_s             ;cêîððåêòèðóåì ïîçèöèþ Õ. Ò.å. ñåé÷àñ â âåðõíåé ÷àñòè ebx ó íàñ òî÷êà íà÷àëà âûâîäà òåêñòà ïî Õ
66
	sub	ax,7				;âíåñåì ñìåùåíèå äëÿ y
Line 47... Line 67...
47
        shr	eax,16				;äëÿ y ïîìåñòèì â ìëàäøóþ ÷àñòü
67
	mov	bx,ax
48
	mov	bx,ax				;âíåñåì ñìåùåíèå äëÿ y
68
						;ebx õ shl 16 +y êîîðäèíàòû âûâîäà ñòðî÷êè
49
 
-
 
50
	mov	ecx,dword ch_text_color		;çàãðóçèì öâåò íàäïèñè + flags
69
 
51
        mov	edx,dword ch_text_ptr		;óêàæåì àäðåñ îò êóäà íóæíî âûâîäèòü ñòðîêó
70
	mov	ecx,dword ch_text_color		;çàãðóçèì öâåò íàäïèñè + flags
52
        mov	eax,4				;âíåñåì â eax çíà÷åíèå âûâîäà íàäïèñè íà êàíâó
71
        mov	edx,dword ch_text_ptr		;óêàæåì àäðåñ îò êóäà íóæíî âûâîäèòü ñòðîêó
Line 53... Line 72...
53
        mcall					;Âûâîä 
72
        mcall	4				;Âûâîä 
54
	popad					;âîññòàíîâèòü çíà÷åíèÿ ðåãèñòðîâ èç ñòåêà
73
	popad					;âîññòàíîâèòü çíà÷åíèÿ ðåãèñòðîâ èç ñòåêà
55
	ret 4					;âûéäåì èç ïðîöåäóðû è óäàëèì èç ñòåêà óêàçàòåëü íà ñòðóêòóðó (4 áàéòà)
74
	ret 4					;âûéäåì èç ïðîöåäóðû è óäàëèì èç ñòåêà óêàçàòåëü íà ñòðóêòóðó (4 áàéòà)
56
 
75
 
57
check_box_clear_ch:				;î÷èñòêà ÷åê áîêñà
76
check_box_clear_ch:				;î÷èñòêà ÷åê áîêñà
58
        mov	edx,dword ch_color   		;öâåò âíóòðè ÷åê áîêñà
77
        mov	edx,dword ch_color   		;öâåò âíóòðè ÷åê áîêñà
59
        jmp	@f				;áåçóñëîâíûé ïðûæîê íà íèæíþþ ìåòêó @@
78
        jmp	@f				;áåçóñëîâíûé ïðûæîê íà íèæíþþ ìåòêó @@
60
check_box_draw_ch:				;íàðèñîâàòü âêëþ÷åííûé ÷åê áîêñ
-
 
61
        mov	edx,dword ch_border_color	;çàãðóçèòü öâåò
-
 
62
@@:
-
 
63
;        movzx ebx,word ch_left  ;çàãðóçèòü êîîðäèíàòó ïî õ
-
 
64
;        mov   eax,dword ch_size
-
 
65
;        mov   di,ax
-
 
66
;        shr   eax,2
-
 
67
;        push  ax
79
check_box_draw_ch:				;íàðèñîâàòü âêëþ÷åííûé ÷åê áîêñ
68
; 
-
 
69
;        push  ax
-
 
70
;        add   ebx,eax           
-
 
71
;        shl   ebx,16            ;ñäâèíåì íà 16 ðàçðÿäîâ â ëåâî (óìíîæèì íà 65536)
-
 
72
;        pop   ax
-
 
73
;        lea   eax,[eax*2]
80
        mov	edx,dword ch_border_color	;çàãðóçèòü öâåò
74
;        sub   bp,ax             ;ñîõðàíèì ðåãèñòð bx â ðåãèñòðå óêàçàòåëÿ áàçû
-
 
75
;        mov   bx,bp
-
 
76
 
81
@@:
77
;        movzx ecx,word ch_top ;çàãðóçèòü êîîðäèíàòó ïî ó
82
;Îòîáðàçèòü âêëþ÷åíûé checkbox
78
;        pop   ax
-
 
79
;        add   cx,ax         
83
	mov	ebx,dword ch_left_s		;çàãðóæàåì õ shl 16 + äëèííà ïî Õ
80
;        shl   ecx,16          ;ñäâèíåì íà 16 ðàçðÿäîâ â ëåâî (óìíîæèì íà 65536)
-
 
81
;        mov   cx,bp           ;çàãðóçèì çíà÷åíèÿ ðåãèñòðà óêàçàòåëÿ áàçû â cx
-
 
82
;        mov   eax,13          ;â eax - çíà÷åíèÿ ôóíêöèè äëÿ âûâîäà ïîëîñû ò.å. ïî ñóòè ïðÿìîóãîëüíèêà, êîòîðûé îòîáðàæàåò âêëþ÷åííûé êîìïîíåíò ÷åê áîêñ
-
 
83
;        mcall            ;âûâîä
-
 
84
 
-
 
85
	mov	ebx,dword ch_left_s
-
 
86
	mov	ecx,dword ch_top_s
84
	mov	ecx,dword ch_top_s		;çàãðóæàåì Y shl 16 + äëèííà ïî Y
87
	add 	ebx,1 shl 16 - 4 
85
	add 	ebx,2 shl 16 - 4		;ïîñëå ýòèõ èçìåíåíèé (X+2) shl 16 +äëèííà ïî (Õ-2)
Line 88... Line 86...
88
	add 	ecx,1 shl 16 - 4
86
	add 	ecx,2 shl 16 - 4		;ïîñëå ýòèõ èçìåíåíèé (Y+2) shl 16 +äëèííà ïî (Y-2)
Line 100... Line 98...
100
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
98
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
101
check_box_mouse:      ;îáðàáîòêà ìûøè 
99
check_box_mouse:      ;îáðàáîòêà ìûøè 
102
pushad
100
pushad
103
	mov	ebp,dword [esp+36]	;çàãðóæàåì óêàçàòåëü íà ñòðóêòóðó, óêàçàòåëü ìû ïåðåäàåì â ñòåêå
101
	mov	ebp,dword [esp+36]	;çàãðóæàåì óêàçàòåëü íà ñòðóêòóðó, óêàçàòåëü ìû ïåðåäàåì â ñòåêå
104
        mcall	37,2			;ïðîâåðÿåì ñîñòîÿíèå êëàâèø ìûøêè. Áûëî ëè ñîáûòèå íàæàòàÿ êëàâèøà íà ìûøêå.
102
        mcall	37,2			;ïðîâåðÿåì ñîñòîÿíèå êëàâèø ìûøêè. Áûëî ëè ñîáûòèå íàæàòàÿ êëàâèøà íà ìûøêå.
105
	test    eax,eax			;ïðîâåðêà åñëè ó íàñ â eax=0, òî óñòàíîâèì ôëàã è âûéäåì
103
	test    eax,eax			;ïðîâåðêà åñëè ó íàñ â eax=0, âûéäåì
106
	jnz     @f			;ïåðåéòè íà íèæíþþ ìåòêó @@, åñëè â eax íå 0.
-
 
107
;        and     dword ch_flags,eax	;èçâëå÷åíèå çíà÷åíèÿ çàäàííîãî áèòà â ôëàã cf è èçìåíåíèå åãî çíà÷åíèÿ íà íóëåâîå. 
-
 
108
        jmp     .check_box_mouse_end     ;îáðàáîòêà çàêîí÷èëàñü
104
	jz	.check_box_mouse_end    ;îáðàáîòêà çàêîí÷èëàñü
109
; Äà ñîáûòèå: íàæàòèå êëàâèøè ìûøêè ïðîèçîøëî.        
105
; Äà ñîáûòèå: íàæàòèå êëàâèøè ìûøêè ïðîèçîøëî.        
110
@@:
106
@@:
111
        mcall	37,1			;ïîëó÷èòü êîîðäèíàòû êóðñîðà îòíîñèòåëüíî îêíà
107
        mcall	37,1			;ïîëó÷èòü êîîðäèíàòû êóðñîðà îòíîñèòåëüíî îêíà
112
					;íà âûõîäå â eax x shl 16 + y
108
					;íà âûõîäå â eax x shl 16 + y
113
;ñðàâíåíèå âåðõíåé òî÷êè ïî Y
109
;ñðàâíåíèå âåðõíåé òî÷êè ïî Y
Line 118... Line 114...
118
	jb	.check_box_mouse_end	;óêàçàòåëü ìûøêè ìåíüøå íà÷àëüíîé êîîðäèíàòû ïî y ÷åì êîîðäèíàòà ïî Y ó áîêñà
114
	jb	.check_box_mouse_end	;óêàçàòåëü ìûøêè ìåíüøå íà÷àëüíîé êîîðäèíàòû ïî y ÷åì êîîðäèíàòà ïî Y ó áîêñà
119
;ñðàâíåíèå íèæíåé òî÷êè ïî Y
115
;ñðàâíåíèå íèæíåé òî÷êè ïî Y
120
	add	cx,bx			;ñëîæèì äëèííó ïî y è êîîðäèíàòó âåðõíåé òî÷êè ïî y ïîëè÷èì êîîðäèíàòó íèæíåé òî÷êè ïî Y
116
	add	cx,bx			;ñëîæèì äëèííó ïî y è êîîðäèíàòó âåðõíåé òî÷êè ïî y ïîëè÷èì êîîðäèíàòó íèæíåé òî÷êè ïî Y
121
	cmp	ax,cx
117
	cmp	ax,cx
122
	ja	.check_box_mouse_end	;óêàçàòåëü ìûøêè áîëüøå êîíå÷íîé êîîðäèíàòû ïî y ÷åì êîîðäèíàòà ïî Y ó áîêñà
118
	ja	.check_box_mouse_end	;óêàçàòåëü ìûøêè áîëüøå êîíå÷íîé êîîðäèíàòû ïî y ÷åì êîîðäèíàòà ïî Y ó áîêñà
-
 
119
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
 
120
	shr	eax,16			;ñìåñòèì êîîðäèíàòó ïî Õ â íèæíóþ ÷àñòü ðåãèñòðà ò.å. â ax
123
;ñðàâíåíèå ïî íà÷àëüíîé òî÷êå Õ
121
;ñðàâíåíèå ïî íà÷àëüíîé òî÷êå Õ
124
	mov 	ecx,dword ch_left_s	;çàãðóçèòü çíà÷åíèå (õ shl 16 + äëèííà)  äëÿ ÷åê áîêñà
122
	mov 	ecx,dword ch_left_s	;çàãðóçèòü çíà÷åíèå (õ shl 16 + äëèííà)  äëÿ ÷åê áîêñà
125
	mov	ebx,ecx
123
	mov	ebx,ecx
126
	shr	ebx,16                  ;bx = êîîðäèíàòà ïî X
124
	shr	ebx,16                  ;bx = êîîðäèíàòà ïî X
127
	cmp	ax,bx
125
	cmp	ax,bx
128
	jb	.check_box_mouse_end	;óêàçàòåëü ìûøêè ìåíüøå íà÷àëüíîé êîîðäèíàòû ïî X ÷åì êîîðäèíàòà ïî X ó áîêñà
126
	jb	.check_box_mouse_end	;óêàçàòåëü ìûøêè ìåíüøå íà÷àëüíîé êîîðäèíàòû ïî X ÷åì êîîðäèíàòà ïî X ó áîêñà
129
;ñðàâíåíèå êîíå÷íîé òî÷êè ïî X
127
;ñðàâíåíèå êîíå÷íîé òî÷êè ïî X
130
	add	bx,cx			;ñëîæèì äëèííó ïî y è êîîðäèíàòó âåðõíåé òî÷êè ïî y ïîëè÷èì êîîðäèíàòó íèæíåé òî÷êè ïî Y
128
	add	bx,cx			;ñëîæèì äëèííó ïî x è êîîðäèíàòó òî÷êè ïî õ ïîëó÷èì êîîðäèíàòó êîíå÷íîé òî÷êè ïî Õ
131
	add	ebx,dword ch_text_margin	;äîáàâèì ðàçìåð ñòîðîíû è ðàññòîÿíèå íà êîòîðîì íà÷íåòñÿ âûâîä òåêñòà
129
	add	bx,word ch_sz_str	;äîáàâèì äëèííó ñòðîêè òåêñòà ñ îòñòóïîì ïðåäâàðòèåëüíî çàïèñàâ èõ â ìîìåíò èíèöèàëèçàöèè
132
	mov	ecx,dword ch_text_ptr	;óêàæåì àäðåñ ñòðîêè ñ òåðìèíèðóåùèì 0
-
 
133
        push	eax
-
 
134
 
-
 
135
;ïîäñ÷åò äëèííû ñòðîêè è óâåëè÷åíèå ïðÿìîãîëüíèêà â êîòîðîì ñðàáàòûâàåò ùåë÷îê ìûøêè
-
 
136
	lodsb	
-
 
137
	test	al,al
-
 
138
	jz	.ex_loop
-
 
139
@@:	
-
 
140
	add	bx,6			;øèðèíà ñèìâîëà
-
 
141
	lodsb
-
 
142
	test	al,al
-
 
143
	jnz	@b
-
 
144
.ex_loop:
-
 
145
	pop	eax	
-
 
146
	cmp	ax,bx
130
	cmp	ax,bx
147
	ja	.check_box_mouse_end	;óêàçàòåëü ìûøêè áîëüøå êîíå÷íîé êîîðäèíàòû ïî y ÷åì êîîðäèíàòà ïî Y ó áîêñà
131
	ja	.check_box_mouse_end	;óêàçàòåëü ìûøêè áîëüøå êîíå÷íîé êîîðäèíàòû ïî õ ÷åì êîîðäèíàòà ïî Õ ó áîêñà
148
;åñëè âñå ïðîâåðêè áûëè óñïåøíî ïðîéäåíû ìû îáÿçàíû ïîìåíÿòü ñîñòîÿíèå áîêñà
132
;åñëè âñå ïðîâåðêè áûëè óñïåøíî ïðîéäåíû ìû îáÿçàíû ïîìåíÿòü ñîñòîÿíèå áîêñà
149
	btc	dword	ch_flags,2	;ïåðåíîñ 2-ãî áèòà â cf è èíâåðñèÿ åãî
133
	btc	dword	ch_flags,2	;ïåðåíîñ 2-ãî áèòà â cf è èíâåðñèÿ åãî
150
	jc	.enable_box		;åñëè CF=1 òî îòîáðàçèì âêëþ÷åííûé áîêñ è âûéäåì
134
	jc	.enable_box		;åñëè CF=1 òî îòîáðàçèì âêëþ÷åííûé áîêñ è âûéäåì
151
	push	dword .check_box_mouse_end	;ôîêóñ -ïîêóñ, âåðíåìñÿ ïîñëå âûçîâà check_box_clear_ch íà ìåòêó check_box_mouse_end
135
	push	dword .check_box_mouse_end	;ôîêóñ -ïîêóñ, âåðíåìñÿ ïîñëå âûçîâà check_box_clear_ch íà ìåòêó check_box_mouse_end
152
	jmp	check_box_clear_ch         ;âûêëþ÷èòü ÷åê áîêñ ò.å. íà ìåñòå çàêðàøåííîãî ïðÿìîóãîëüíèêà îòîáðàçèòü öâåò ôîíà.	
136
	jmp	check_box_clear_ch      ;âûêëþ÷èòü ÷åê áîêñ ò.å. íà ìåñòå çàêðàøåííîãî ïðÿìîóãîëüíèêà îòîáðàçèòü öâåò ôîíà.	
Line 153... Line 137...
153
 
137
 
154
.enable_box:
138
.enable_box:
155
	call	check_box_draw_ch        ;îòîáðàçèòü âêëþ÷åííûé ÷åê áîêñ
-
 
156
 
-
 
157
 
-
 
158
 
-
 
159
;	bts  dword ch_flags,2   ;ïðîâåðêà ôëàãà ò.å. ïåðåíîñ â cf çíà÷åíèå áèòà è óñòàíîâêà áèòà â ñîñòîÿíèå âêëþ÷åíî
-
 
160
;        jc   check_box_mouse_end         ;åñëè CF=1 òî ïåðåéòè  â êîíåö ò.å. ýòî âûõîä
-
 
161
;        mov  esi,dword ch_text_length ;çàãðóçèòü êîë-âî ñèìâîëîâ â òåêñòîâîé ñòðîêå
-
 
162
        ;Óìíîæåíèå íà 6 Áûñòðîå óìíîæåíèå ìîæíî âîñïîëüçîâàòüñÿ ëþáûì ìç ìåòîäîâ, íî íà ñòàðûõ Ïðîöåññîðàõ (386,486,P1)áûñòðåå áóäåò ñ èíñòðóêöèåé Lea
-
 
163
;        lea esi,[eax*3]  
-
 
164
;        shl esi,1
-
 
165
;        imul esi,6             ; èëè ìîæíî è òàê óìíîæèòü íà 6
-
 
166
;        add  esi,dword ch_text_margin ;äîáàâèòü 3 - ðàññòîÿíèå îò ÷åê áîêñà äî íàäïèñè
-
 
167
 
-
 
168
;        mov  eax,37             ;ïîëó÷èì êîîðäèíàòû ìûøêè 
-
 
169
;        mov  ebx,1              ;äîáàâèòü 1
-
 
170
;        mcall               ;ïîëó÷èòü êîîðäèíàòû êóðñîðà îòíîñèòåëüíî îêíà 
-
 
171
        
-
 
172
;        movzx ebx,word ch_top  ;çàãðóçèòü â bx çíà÷åíèå êîîðäèíàòû ó
-
 
173
;        cmp   ax,bx              ;ñðàâíèòü ñ ñ êîîðäèíàòîé êóðñîðà
-
 
174
;        jl   check_box_mouse_end          ;SF <> OF åñëè ìåíüøå 
-
 
175
;        add   ebx,dword ch_size        ;äîáàâèòü ðàçìåð 
-
 
176
;        cmp   ax,bx              ;ñðàâíèòü
-
 
177
;        jg   check_box_mouse_end          ;ZF = 0 è SF = OF åñëè áîëüøå 
-
 
178
             
-
 
179
;        shr   eax,16              ;ðàçäåëèì íà 65536 èëè ïðîñòî ñäâèíåì áèòû íà 16 çíà÷åíèé
-
 
180
;        movzx ebx,word ch_left  ;ïðîèçâåäåì àíàëîãè÷íîå ñðàâíåíèå
-
 
181
;        cmp   ax,bx            ;ñðàâíèòü ðåãèñòðû
-
 
182
;        jl   check_box_mouse_end        ;åñëè ìåíüøå
-
 
183
;        add   ebx,dword ch_size      ;äîáàâèòü äëèíó ñòîðîíû ïðÿìîóãîëüíèêà
-
 
184
;        add   ebx,esi          ;Ó÷åñòü â çíà÷åíèè ïî õ åùå è äëèíó íàäïèñè ê ÷åêáîêñó
-
 
185
;        cmp   ax,bx            ;ñòðàâíèòü ðåãèñòðû
-
 
186
;        jg   check_box_mouse_end        ;åñëè áîëüøå 
-
 
187
 
-
 
188
;        bts  dword ch_flags,1  ;èçâëå÷åíèå çíà÷åíèÿ çàäàííîãî áèòà â ôëàã cf è èçìåíåíèå åãî çíà÷åíèÿ íà 1. 
-
 
189
;        jc   @f                ;CF=1 òî ïåðåéòè íà íèæíþþ @@
-
 
190
        
-
 
191
;        call check_box_draw_ch        ;îòîáðàçèòü âêëþ÷åííûé ÷åê áîêñ
-
 
192
;        mov   dword [esp+24],1 ;äàëüíåéøàÿ ïðîâåðêà ÷åê áîêñîâ áåñìûñëåíà, ïî ýòîìó â ñòåê, ãäå ðàñïîëàãàåòñÿ ecx ïîìåñòèòì 0 
-
 
193
;        jmp  check_box_mouse_end       ;âûéòè 
-
 
194
;@@:
-
 
195
;        btr   word ch_flags,1  ;èçâëå÷åíèå çíà÷åíèÿ çàäàííîãî áèòà â ôëàã cf è èçìåíåíèå åãî çíà÷åíèÿ íà íóëåâîå. 
-
 
196
;        call check_box_clear_ch         ;âûêëþ÷èòü ÷åê áîêñ ò.å. íà ìåñòå çàêðàøåííîãî ïðÿìîóãîëüíèêà îòîáðàçèòü öâåò ôîíà.
139
	call	check_box_draw_ch	;îòîáðàçèòü âêëþ÷åííûé ÷åê áîêñ
197
.check_box_mouse_end:
140
.check_box_mouse_end:
198
popad                                ;âîññòàíîâèòü ðåãèñòðû èç ñòåêà
141
popad					;âîññòàíîâèòü ðåãèñòðû èç ñòåêà
199
ret  4                              ;âûéòè
142
	ret  4				;âûéòè è âîññòàíîâèì ñòåê
200
}
143
}