0,0 → 1,187 |
Ïîñäåäíàÿ ìîäèôèêàöèÿ |
;;;;;;;;;;;;;;;;;;;;;;;;;;; |
;;;Ñòðóêòóðíîå îïèñàíèå âîçìîæíîñòè êîìïîåíòà è ìîäåëåé åãî èñïîëüçîâàíèÿ. |
;;;;;;;;;;;;;;;;;;;;;;;;;;; |
Íàïèøèòå â èñõîäíîì êîäå ñâîåé ïðîãðàììû use_edit_box, |
ýòî âñòàâèò íåîáõîäèìûå ïðîöåäóðû â êîä âàøåé ïðîãðàììû. |
Ïðîöåäóðû: |
edit_box.draw - ïîëíàÿ ïåðåðèñîâêà; |
edit_box.key - îáðàáîòêà êëàâèàòóðû; |
edit_box.mouse - îáðàáîòêà ìûøè; |
edit_box.focus - óñòàíîâêà ôîêóñà; |
edit_box.blur - åãî ðàçìûâàíèå; |
edit_box.get_n - ïîëó÷èòü êîëè÷åñòâî ïðîðèñîâûâàåìûõ ñèìâîëîâ. |
Ïðè âûçîâå ëþáûõ èç ýòèõ ïðîöåäóð â ðåãèñòðå edi ñëåäóåò |
îñòàâèòü óêàçàòåëü íà ñòðóêòóðó. |
Ïðèìåð ñòðóêòóðû: |
some_edit edit_box 100,10,30,0x00ffffff,0,0x00aaaaaa,0,255,some_edit_text |
äëèíà, âûñîòà, âåðõ, öâåò ôîíà, öâåò ðàìêè, åñëè âûáðàí, |
öâåò ðàìêè, åñëè íå âûáðàí, ìàêñèìàëüíîå êîëè÷åñòâî ñèìâîëîâ, |
óêàçàòåëü íà áóôåð, ãäå áóäóò õðàíèòñÿ ñèìâîëû. Áóôåð äîëæåí |
îêàí÷èâàòüñÿ íóëåì, íàïðèìåð åñëè ìàêñèìàëüíîå êîëè÷åñòâî 255: |
some_edit_text: |
rb 256 ;255+1 |
Ïðèìåð âûçîâà ïðîöåäóðû: |
mov edi,some_edit |
call edit_box.draw |
Ïðè âûçîâå ïðîöåäóðû edit_box.key êîä êëàâèøè äîëæåí |
íàõîäèòñÿ â ah, òî åñòü ïåðåä âûçîâîì ýòîé ïðîöåäóðû íàäî âûçâàòü |
2-óþ ñèñåìíóþ ôóíêöèþ, íàïðèìåð: |
mov eax,2 |
int 0x40 |
mov edi,some_edit1 |
call edit_box.key |
mov edi,some_edit2 |
call edit_box.key |
Ïåðåä âûçîâîì îáðàáîò÷èêà ìûøè ñëåäóåò ïðîâåðèòü, ÿâëÿåòñÿ ëè îêíî |
àêòèâíûì. |
Åñëè ùåë÷îê ìûøè áûë ïðîéçâåäåí çà ïðåäåëàìè edit box |
ôîêóñ òåðÿåòñÿ. |
::::::::::::::::::::::::: |
;;;Ìàêðîñû, è ïåðåäàâàåìûå èì ïàðàìåòðû |
;;;;;;;;;;;;;;;;;;;;;;;;; |
*********** |
use_edit_box |
äàííûé ìàêðîñ âñòàâëÿåò îáùèé êîä editbox |
structure_of_potock - óêàçàòåëü íà èíôîðìàöèîííóþ ñòðêòóðó 9 ôóíöèè - îáÿçàòåëüíûé ïàðàìåòð |
|
Åñëè âû èñïîëüçóåòå ïðè ïðîðèñîâêå îêíà |
mcall 0,(50*65536+390),(30*65536+200),0xb3AABBCC,0x805080DD,hed |
òî 0xb3AABBCC - òðåòèé áèò - êîòîðûé ãîâîðèò ÷òî êîîðäèíàòû îò÷èòûâàòü îò êëèåíòñêîé îáëàñòè, âàì íóæíî óêàçàòü îáÿçàòåëüíî äâà ýòèõ ïàðàìåòðà |
 äðóãèõ ñëó÷àÿõ ïåðåäàâàòü ýòè ïàðàìåòðû íå íóæíî |
scr_h - íå îáÿçàòåëüíûé ïàðàìåòð îáû÷íî 22 |
scr_w - íå îáÿçàòåëüíûé ïàðàìåòð îáû÷íî 5 |
*********** |
mouse_edit_boxes |
êîä îáðàáîòêè ìûøêè, âñòàâëÿåòñÿ îáû÷íî ïîñåë îáðàáîòêè âñåõ ïðåäûäóøèõ ñîáûòèé |
Ïåðåäàâàåìûå ïàðàìåòðû |
editboxes - óêàçàòåëü íà èíôîðìàöèîííóþ ñòðóêóðó áîêñîâ |
editboxes_end - êîíåö èíôîðìàöèîííîé ñòðóêòóðû áîêñîâ |
|
Êàê ïîä âàðèàíò ñóùåñòâóåò ìàêðîñ |
mouse_edit_box - îí èñïîëüçóåòñÿ åñëè âûâîäèòüñÿ÷ îäèí áîêñ |
Ïåðåäàâàåìûé ïàðàìåòð |
editboxes - óêàçàòåëü íà èíôîðìàöèîííóþ ñòðóêóðó áîêñîâ |
Áîëüøå íèêàêèõ ïàðàìåòðîâ ïåðåäàâàòü íå íóæíî. |
********** |
key_edit_boxes - ìàêðîñ îáðàáîêè êëàâèø áîêñàìè âñòàâëÿåòñÿ ïîñëå òîãî êàê ïðîèñõîäèò îáðàáîòêà ñîáûòèÿ ÷òî íàæàòà êëàâèøà |
Ïåðåäàâàåìûå ïàðàìåòðû |
editboxes - óêàçàòåëü íà èíôîðìàöèîííóþ ñòðóêóðó áîêñîâ |
editboxes_end - êîíåö èíôîðìàöèîííîé ñòðóêòóðû áîêñîâ |
|
Êàê ïîä âàðèàíò ñóùåñòâóåò ìàêðîñ |
key_edit_box - îí èñïîëüçóåòñÿ åñëè âûâîäèòüñÿ÷ îäèí áîêñ |
Ïåðåäàâàåìûé ïàðàìåòð |
editboxes - óêàçàòåëü íà èíôîðìàöèîííóþ ñòðóêóðó áîêñîâ |
Áîëüøå íèêàêèõ ïàðàìåòðîâ ïåðåäàâàòü íå íóæíî. |
********** |
draw_edit_boxes - ìàêðîñ äëÿ âûâîäà áîêñîâ èñïîëüçóåòñÿ â âûâîäå îêíà |
Ïåðåäàâàåìûå ïàðàìåòðû |
editboxes - óêàçàòåëü íà èíôîðìàöèîííóþ ñòðóêóðó áîêñîâ |
editboxes_end - êîíåö èíôîðìàöèîííîé ñòðóêòóðû áîêñîâ |
use_f9 è structure_of_potock - ïðè ïåðåäà÷å ýòîãî ïàðàìåòðà - ïðè ïåðåðèñîâêè áîêñîâ áóäåò èñïîëçîâàíà ôóíöèÿ |
mcall 9,structure_of_potock,-1 |
êîòîðàÿ ïîëó÷àåò äàííûå î îêíå è ñêëàäûâàåò ïàðàìåòðû ïî àäðåñó structure_of_potock- åãî òî æå îáÿçàòåëüíî íóæíî ïåðåäàâàòü!!!! |
Åñëè â ïðîãðàììå óæå èñïîëüçóåòñÿ ýòà ôóíöèÿ, òî íå íóæíî óêàçûâàòü äàííûå ïàðàìåòð!!!! |
|
Êàê ïîä âàðèàíò ñóùåñòâóåò ìàêðîñ |
draw_edit_box - îí èñïîëüçóåòñÿ åñëè âûâîäèòüñÿ÷ îäèí áîêñ |
Ïåðåäàâàåìûé ïàðàìåòð |
editboxes - óêàçàòåëü íà èíôîðìàöèîííóþ ñòðóêóðó áîêñîâ |
use_f9 è structure_of_potock - ïðè ïåðåäà÷å ýòîãî ïàðàìåòðà - ïðè ïåðåðèñîâêè áîêñîâ áóäåò èñïîëçîâàíà ôóíöèÿ |
mcall 9,structure_of_potock,-1 |
êîòîðàÿ ïîëó÷àåò äàííûå î îêíå è ñêëàäûâàåò ïàðàìåòðû ïî àäðåñó structure_of_potock- åãî òî æå îáÿçàòåëüíî íóæíî ïåðåäàâàòü!!!! |
Åñëè â ïðîãðàììå óæå èñïîëüçóåòñÿ ýòà ôóíöèÿ, òî íå íóæíî óêàçûâàòü äàííûå ïàðàìåòð!!!! |
Áîëüøå íèêàêèõ ïàðàìåòðîâ ïåðåäàâàòü íå íóæíî. |
********** |
default_box - ìàêðîñ êîòîðûé ïðèâîäèò îñíîâûå äàííûå ìàêðîñà ïî äåôîëòó ò.å. Ñíèìàåò áèòîâóþ ìàòðèöó âûäåëåíèÿ |
Ñïåöèàëüíî äëà KFM :)) Íóæíî äîáàâèòü ýòîò êîä ïðè ïðè îáðàáîò÷èêå yes or no ïðè êîïèðîâàíèè. Åñëè áóäåò âåñòè ñåáÿ íåàäåêâàòíî - íåîáõîäèìî ðàñêîìåíòèðîâàòü ñòðîêè â äàííîì ìàêðîñå |
|
|
|
|
|
|
Q: |
Âîçíèêëà ïàðà ïðîáëåì: |
1) Äëèíà ìàêñèìàëüíî íàáèðàåìîãî òåêñòà íè÷åì íå îãðàíè÷åíà, â ðåçóëüòàòå ïðè ïðåâûøåíèè ðàçìåðà áóôåðà çàòèðàþòñÿ äàííûå, êîòîðûå èäóò ïîñëå áóôåðà èëè êîä, åñëè îí òàì ðàñïîëîæåí. |
2) Ïîëîæåíèå ýëåìåíòà ôèêñèðîâàíî, õîòåëîñü áû ðàáîòàòü ñ äèíàìè÷åñêè âû÷èñëÿåìûìè çíà÷åíèÿìè. Íàïðèìåð, åñëè ðàçìåð îêíà èçìåíèëñÿ, à ýëåìåíò äîëæåí ðàñïîëàãàòüñÿ ïî öåíòðó îêíà âñåãäà. |
|
A: |
1) Äëèííà íàáèðàåìîãî òåêñòà îãðàíè÷åíà, âîò ñìîòðè: |
edit2 edit_box 250,5,30,0xffffff,0,0,0,308,hed,ed_focus,53 - ýòî ïðèìåð èíèöèàëèçàöèè editbox |
Èòàê ïîïîðÿäêó: |
Ýòî ìàêðîñ èíèöèàëèçàöèè ñòðóêòóðû |
struc edit_box width,left,top,color,focus_border_color,blur_border_color,text_color,max,text,flags,size |
{ |
.width dd width |
.left dd left |
.top dd top |
.color dd 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 |
.flags dw flags+0 |
.size dd size+0 |
.pos dd 0 - ãäå áóäåò íàõîäèòüñÿ êóðñîð |
.offset dd 0 |
.cl_curs_x dd 0 |
.cl_curs_y dd 0 |
.shift dd 0 |
.shift_old dd 0 |
} |
250 - ýòî äëèííà editbox width |
5 - îòñòóï îò ëåâîãî êðàÿ left |
30 - îòñòóï ñ âåðõà top |
0xffffff - öâåò âíóòðè editbox |
0x6a9480 - öâåò ïðè âûäåëåíèè ìûøêîé èëè ïî shift |
0 - focus_border_color öâåò ðàìêè editbox, êîãäà â ôîêóñå ò.å. àêòèâåí editbox |
0 - blur_border_color öâåò ðàìêè editbox, êîãäà â íå ôîêóñå ò.å. íå àêòèâåí editbox |
0 - text_color öâåò òåêñòà editbox. |
308 - max ìàêñèìàëüíîå êîë-âî òåêñòà êîòîðîå ìîæíîââåñòè (îòâåò íà òâîé âîïðîñ, îáðàòè âíèìàíèå íà òî ÷òî ýòî çíà÷åíèå äîëæíî áûòü ìåíüøå íà 2 ÷åì ðàçìåð áóôôåðà!! Èíà÷å ó òåáÿ áóäóò çàòåðòû 2 áàéòà ñëåäóþùèå ïîñëå áóôôåðà!) |
hed - tex óêàçàòåëü íà íà÷àëî áóôôåðà |
ed_focus - ôëàã(è0 â äàííîì ñëó÷àå óñòàíîâèòü ôîêóñ ýòîìó Editbox'ó - flags |
53 - òåêóùåå çíà÷åíèå ðàçìåðà size. åãî íåîáõîäèìî óêàçûâàòü, åñëè òåáå íóæíî óæå îòîáðàæàòü ñóùåñòâóþùèé òåêñò. Èëè ìîæíî åùå ñäåëàòü òàê, òû óêàçûâàåøü, áóôåð ñ òåêñòîì, íî òóò íè÷åãî íå ïèøåøü, èëè 0, òîãäà, åñëè ÷åëîâåê íà÷èíàåò ââîäèòü ñâîé, ñóùåñòâóþùèé òåêñò óæå áóäåò àâòîìàòîì çàòåðò. |
53 - ïîëîæåíèå êóðñîðà - ãîâîðèì, ÷òî áû îí íàõîäèëñÿ â êîíöå ñòðî÷êè íà ïîñëåäíèì ñèìâîëå, áîëüøå ýòî çíà÷åíèå áûòü íå äîëæíî, ò.ê. èíà÷å ãëþêè :))) |
<DATA> - òóò ðàñïîëîæåí ñàì áóôôåð, + òåêñò. |
hed db 'EDITBOX optimization and retype <Lrz> date 09.03.2007',0 ; èòîãî 54 ñèìâîëà |
rb 256 ; 256+54 =310 ó ìåíÿ óêàçàí ðàçìåð 308 - 2 áàéòà íà ñèñòåèíûå íóæäû (ïî èäåå äîëæíî õâàòàòü îäíîãî, íî ãäå - òî åñòü êîñÿê â êîäå) |
|
2) Èçìåíÿòü ïîëîæåíèå ïðè èçìåíåíèè ðàçìåðîâ îêíà. Âîîáùå ýòî íå çàäà÷à editbox, íî ýòî äîñòàòî÷íî ïðîñòî ñäåëàòü, |
.width dd width |
.left dd left |
.top dd top |
Âîò ÷àñòü ñòóêòóðû. |
|
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> |
;DATA äàííûå |
editboxes: |
edit1 edit_box 168,5,10,0xffffff,0x6a9480,0,0,0,99,ed_buffer.2,ed_figure_only |
edit2 edit_box 250,5,30,0xffffff,0x6a9480,0,0xAABBCC,0,308,hed,ed_focus,53,53 |
edit3 edit_box 35,5,50,0xffffff,0x6a9480,0,0,0,9,ed_buffer.3,ed_figure_only |
edit4 edit_box 16,5,70,0xffffff,0x6a9480,0,0,0,1,ed_buffer.4,ed_figure_only |
editboxes_end: |
|
|
À ýòî ïðèìåð èíèöèàëèçàöèè |
Èòàê ïîëó÷àåì |
lea eax, editboxes - â åàõ óêàçàòåëü íà äàííûå áîêñîâ. |
Äàëåå âíîñèì ïî àäðåñó |
mov dword [eax], íîâîå çíà÷åíèå width |
mov dword [eax+4], íîâîå çíà÷åíèå left |
mov dword [eax+8], íîâîå çíà÷åíèå top |
|
Ýòî âñå äëÿ ïåðâîãî editbox |
äëÿ âòîðîãî |
add eax,ed_struc_size |
; ýòî ðàçìåðíîñòü â áàéòàõ çàïèñè äëèííû îäíîãî editbox |
È ñíîâà |
mov dword [eax], íîâîå çíà÷åíèå width |
mov dword [eax+4], íîâîå çíà÷åíèå left |
mov dword [eax+8], íîâîå çíà÷åíèå top |
Ýòî óæå äëÿ âòîðîãî editbox |
|
È òàê äàëåå ))). |
Íàäåþñü ÿ äëÿ òåáÿ ïðîÿñíèë îáùèé àëãîðèòì èçìåíåíèÿ |