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 |
2 | ;ôàéë ñîçäàí 13.02.2009 |
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 | } |