Subversion Repositories Kolibri OS

Rev

Rev 483 | Rev 772 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. EDITBOX èñïîëüçóåò ìàêðîñ macroc.inc â êîðíå äèðåêòîðèè, òàêæå èñïîëüçóåò ôàéë íàñòðîåê ïðè
  2. êîìïèëÿöèè êîäà, struct.inc â êîòîðîì íóæíî óêàçàòü ïðàâèëüíûé òèï ïðîöåññîðà äëÿ âàøåé
  3. ñèñòåìû!!
  4.  
  5.  
  6. Ïîñäåäíàÿ ìîäèôèêàöèÿ
  7. ;;;;;;;;;;;;;;;;;;;;;;;;;;;
  8. ;;;Ñòðóêòóðíîå îïèñàíèå âîçìîæíîñòè êîìïîíåòà è ìîäåëåé åãî èñïîëüçîâàíèÿ.
  9. ;;;;;;;;;;;;;;;;;;;;;;;;;;;
  10.   Íàïèøèòå â èñõîäíîì êîäå ñâîåé ïðîãðàììû use_edit_box,
  11. ýòî âñòàâèò íåîáõîäèìûå ïðîöåäóðû â êîä âàøåé ïðîãðàììû.
  12.   Ïðîöåäóðû:
  13.    edit_box.draw - ïîëíàÿ ïåðåðèñîâêà;
  14.    edit_box.key - îáðàáîòêà êëàâèàòóðû;
  15.    edit_box.mouse - îáðàáîòêà ìûøè;
  16.    edit_box.focus - óñòàíîâêà ôîêóñà;
  17.    edit_box.blur - åãî ðàçìûâàíèå;
  18.    edit_box.get_n - ïîëó÷èòü êîëè÷åñòâî ïðîðèñîâûâàåìûõ ñèìâîëîâ.
  19.   Ïðè âûçîâå ëþáûõ èç ýòèõ ïðîöåäóð â ðåãèñòðå edi ñëåäóåò
  20. îñòàâèòü óêàçàòåëü íà ñòðóêòóðó.
  21.   Ïðèìåð ñòðóêòóðû:
  22. some_edit edit_box 100,10,30,0x00ffffff,0,0x00aaaaaa,0,255,some_edit_text
  23. äëèíà, âûñîòà, âåðõ, öâåò ôîíà, öâåò ðàìêè, åñëè âûáðàí,
  24. öâåò ðàìêè, åñëè íå âûáðàí, ìàêñèìàëüíîå êîëè÷åñòâî ñèìâîëîâ,
  25. óêàçàòåëü íà áóôåð, ãäå áóäóò õðàíèòñÿ ñèìâîëû. Áóôåð äîëæåí
  26. îêàí÷èâàòüñÿ íóëåì, íàïðèìåð åñëè ìàêñèìàëüíîå êîëè÷åñòâî 255:
  27.   some_edit_text:
  28.        rb      256 ;255+1
  29.   Ïðèìåð âûçîâà ïðîöåäóðû:
  30.        mov     edi,some_edit
  31.        call    edit_box.draw
  32.   Ïðè âûçîâå ïðîöåäóðû edit_box.key êîä êëàâèøè äîëæåí
  33. íàõîäèòñÿ â ah, òî åñòü ïåðåä âûçîâîì ýòîé ïðîöåäóðû íàäî âûçâàòü
  34.  2-óþ ñèñåìíóþ ôóíêöèþ, íàïðèìåð:
  35.        mov     eax,2
  36.        int     0x40
  37.        mov     edi,some_edit1
  38.        call    edit_box.key
  39.        mov     edi,some_edit2
  40.        call    edit_box.key
  41.   Ïåðåä âûçîâîì îáðàáîò÷èêà ìûøè ñëåäóåò ïðîâåðèòü, ÿâëÿåòñÿ ëè îêíî
  42. àêòèâíûì.
  43.   Åñëè ùåë÷îê ìûøè áûë ïðîéçâåäåí çà ïðåäåëàìè edit box
  44. ôîêóñ òåðÿåòñÿ.
  45. :::::::::::::::::::::::::
  46. ;;;Ìàêðîñû, è ïåðåäàâàåìûå èì ïàðàìåòðû
  47. ;;;;;;;;;;;;;;;;;;;;;;;;;
  48. ***********
  49. use_edit_box
  50. äàííûé ìàêðîñ âñòàâëÿåò îáùèé êîä editbox
  51. procinfo - óêàçàòåëü íà èíôîðìàöèîííóþ ñòðêòóðó 9 ôóíöèè - îáÿçàòåëüíûé ïàðàìåòð
  52.  
  53. Åñëè âû èñïîëüçóåòå ïðè ïðîðèñîâêå îêíà
  54.         mcall   0,(50*65536+390),(30*65536+200),0xb3AABBCC,0x805080DD,hed
  55. òî 0xb3AABBCC - òðåòèé áèò - êîòîðûé ãîâîðèò ÷òî êîîðäèíàòû îò÷èòûâàòü îò êëèåíòñêîé îáëàñòè, âàì íóæíî óêàçàòü îáÿçàòåëüíî äâà ýòèõ ïàðàìåòðà
  56.  äðóãèõ ñëó÷àÿõ ïåðåäàâàòü ýòè ïàðàìåòðû íå íóæíî
  57. scr_h - íå îáÿçàòåëüíûé ïàðàìåòð  îáû÷íî 22
  58. scr_w - íå îáÿçàòåëüíûé ïàðàìåòð  îáû÷íî 5
  59. ***********
  60. mouse_edit_boxes
  61. êîä îáðàáîòêè ìûøêè, âñòàâëÿåòñÿ îáû÷íî ïîñåë îáðàáîòêè âñåõ ïðåäûäóøèõ ñîáûòèé
  62. Ïåðåäàâàåìûå ïàðàìåòðû
  63. editboxes - óêàçàòåëü íà èíôîðìàöèîííóþ ñòðóêóðó áîêñîâ
  64. editboxes_end - êîíåö èíôîðìàöèîííîé ñòðóêòóðû áîêñîâ
  65.  
  66. Êàê ïîä âàðèàíò ñóùåñòâóåò ìàêðîñ
  67. mouse_edit_box - îí èñïîëüçóåòñÿ åñëè âûâîäèòüñÿ÷ îäèí áîêñ
  68. Ïåðåäàâàåìûé ïàðàìåòð
  69. editboxes - óêàçàòåëü íà èíôîðìàöèîííóþ ñòðóêóðó áîêñîâ
  70. Áîëüøå íèêàêèõ ïàðàìåòðîâ ïåðåäàâàòü íå íóæíî.
  71. **********
  72. key_edit_boxes - ìàêðîñ îáðàáîêè êëàâèø áîêñàìè âñòàâëÿåòñÿ ïîñëå òîãî êàê ïðîèñõîäèò îáðàáîòêà ñîáûòèÿ ÷òî íàæàòà êëàâèøà
  73. Ïåðåäàâàåìûå ïàðàìåòðû
  74. editboxes - óêàçàòåëü íà èíôîðìàöèîííóþ ñòðóêóðó áîêñîâ
  75. editboxes_end - êîíåö èíôîðìàöèîííîé ñòðóêòóðû áîêñîâ
  76.  
  77. Êàê ïîä âàðèàíò ñóùåñòâóåò ìàêðîñ
  78. key_edit_box - îí èñïîëüçóåòñÿ åñëè âûâîäèòüñÿ÷ îäèí áîêñ
  79. Ïåðåäàâàåìûé ïàðàìåòð
  80. editboxes - óêàçàòåëü íà èíôîðìàöèîííóþ ñòðóêóðó áîêñîâ
  81. Áîëüøå íèêàêèõ ïàðàìåòðîâ ïåðåäàâàòü íå íóæíî.
  82. **********
  83. draw_edit_boxes - ìàêðîñ äëÿ âûâîäà áîêñîâ èñïîëüçóåòñÿ â âûâîäå îêíà
  84. Ïåðåäàâàåìûå ïàðàìåòðû
  85. editboxes - óêàçàòåëü íà èíôîðìàöèîííóþ ñòðóêóðó áîêñîâ
  86. editboxes_end - êîíåö èíôîðìàöèîííîé ñòðóêòóðû áîêñîâ
  87. use_f9 è procinfo - ïðè ïåðåäà÷å ýòîãî ïàðàìåòðà - ïðè ïåðåðèñîâêè áîêñîâ áóäåò èñïîëçîâàíà ôóíöèÿ
  88. mcall   9,procinfo,-1
  89. êîòîðàÿ ïîëó÷àåò äàííûå î îêíå è ñêëàäûâàåò ïàðàìåòðû ïî àäðåñó  procinfo- åãî òî æå îáÿçàòåëüíî íóæíî ïåðåäàâàòü!!!!
  90. Åñëè â ïðîãðàììå óæå èñïîëüçóåòñÿ ýòà ôóíöèÿ, òî íå íóæíî óêàçûâàòü äàííûå ïàðàìåòð!!!!
  91.  
  92. Êàê ïîä âàðèàíò ñóùåñòâóåò ìàêðîñ
  93. draw_edit_box - îí èñïîëüçóåòñÿ åñëè âûâîäèòüñÿ÷ îäèí áîêñ
  94. Ïåðåäàâàåìûé ïàðàìåòð
  95. editboxes - óêàçàòåëü íà èíôîðìàöèîííóþ ñòðóêóðó áîêñîâ
  96. use_f9 è procinfo - ïðè ïåðåäà÷å ýòîãî ïàðàìåòðà - ïðè ïåðåðèñîâêè áîêñîâ áóäåò èñïîëçîâàíà ôóíöèÿ
  97. mcall   9,procinfo,-1
  98. êîòîðàÿ ïîëó÷àåò äàííûå î îêíå è ñêëàäûâàåò ïàðàìåòðû ïî àäðåñó  procinfo- åãî òî æå îáÿçàòåëüíî íóæíî ïåðåäàâàòü!!!!
  99. Åñëè â ïðîãðàììå óæå èñïîëüçóåòñÿ ýòà ôóíöèÿ, òî íå íóæíî óêàçûâàòü äàííûå ïàðàìåòð!!!!
  100. Áîëüøå íèêàêèõ ïàðàìåòðîâ ïåðåäàâàòü íå íóæíî.
  101. **********
  102. default_box - ìàêðîñ êîòîðûé ïðèâîäèò îñíîâûå äàííûå ìàêðîñà ïî äåôîëòó ò.å. Ñíèìàåò áèòîâóþ ìàòðèöó âûäåëåíèÿ
  103. Ñïåöèàëüíî äëà KFM :)) Íóæíî äîáàâèòü ýòîò êîä ïðè ïðè îáðàáîò÷èêå yes or no ïðè êîïèðîâàíèè. Åñëè áóäåò âåñòè ñåáÿ íåàäåêâàòíî - íåîáõîäèìî ðàñêîìåíòèðîâàòü ñòðîêè â äàííîì ìàêðîñå
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110. Q:
  111. Âîçíèêëà ïàðà ïðîáëåì:
  112. 1) Äëèíà ìàêñèìàëüíî íàáèðàåìîãî òåêñòà íè÷åì íå îãðàíè÷åíà, â ðåçóëüòàòå ïðè ïðåâûøåíèè ðàçìåðà áóôåðà çàòèðàþòñÿ äàííûå, êîòîðûå èäóò ïîñëå áóôåðà èëè êîä, åñëè îí òàì ðàñïîëîæåí.
  113. 2) Ïîëîæåíèå ýëåìåíòà ôèêñèðîâàíî, õîòåëîñü áû ðàáîòàòü ñ äèíàìè÷åñêè âû÷èñëÿåìûìè çíà÷åíèÿìè. Íàïðèìåð, åñëè ðàçìåð îêíà èçìåíèëñÿ, à ýëåìåíò äîëæåí ðàñïîëàãàòüñÿ ïî öåíòðó îêíà âñåãäà.
  114.  
  115. A:
  116. 1) Äëèííà íàáèðàåìîãî òåêñòà îãðàíè÷åíà, âîò ñìîòðè:
  117. edit2 edit_box 250,5,30,0xffffff,0,0,0,308,hed,ed_focus,53 - ýòî ïðèìåð èíèöèàëèçàöèè editbox
  118. Èòàê ïîïîðÿäêó:
  119. Ýòî ìàêðîñ èíèöèàëèçàöèè ñòðóêòóðû
  120. struc edit_box width,left,top,color,focus_border_color,blur_border_color,text_color,max,text,flags,size
  121. {
  122. .width dd width
  123. .left dd left
  124. .top dd top
  125. .color dd color
  126. .focus_border_color dd focus_border_color
  127. .blur_border_color dd blur_border_color
  128. .text_color dd text_color
  129. .max dd max
  130. .text dd text
  131. .flags dw flags+0
  132. .size dd size+0
  133. .pos dd 0 - ãäå áóäåò íàõîäèòüñÿ êóðñîð
  134. .offset dd 0
  135. .cl_curs_x dd 0
  136. .cl_curs_y dd 0
  137. .shift dd 0
  138. .shift_old dd 0
  139. }
  140. 250 - ýòî äëèííà editbox width
  141. 5 - îòñòóï îò ëåâîãî êðàÿ left
  142. 30 - îòñòóï ñ âåðõà top
  143. 0xffffff - öâåò âíóòðè editbox
  144. 0x6a9480 - öâåò ïðè âûäåëåíèè ìûøêîé èëè ïî shift
  145. 0 - focus_border_color öâåò ðàìêè editbox, êîãäà â ôîêóñå ò.å. àêòèâåí editbox
  146. 0 - blur_border_color öâåò ðàìêè editbox, êîãäà â íå ôîêóñå ò.å. íå àêòèâåí editbox
  147. 0 - text_color öâåò òåêñòà editbox.
  148. 308 - max ìàêñèìàëüíîå êîë-âî òåêñòà êîòîðîå ìîæíîââåñòè (îòâåò íà òâîé âîïðîñ, îáðàòè âíèìàíèå íà òî ÷òî ýòî çíà÷åíèå äîëæíî áûòü ìåíüøå íà 2 ÷åì ðàçìåð áóôôåðà!! Èíà÷å ó òåáÿ áóäóò çàòåðòû 2 áàéòà ñëåäóþùèå ïîñëå áóôôåðà!)
  149. hed - tex óêàçàòåëü íà íà÷àëî áóôôåðà
  150. ed_focus - ôëàã(è0 â äàííîì ñëó÷àå óñòàíîâèòü ôîêóñ ýòîìó Editbox'ó - flags
  151. 53 - òåêóùåå çíà÷åíèå ðàçìåðà size. åãî íåîáõîäèìî óêàçûâàòü, åñëè òåáå íóæíî óæå îòîáðàæàòü ñóùåñòâóþùèé òåêñò. Èëè ìîæíî åùå ñäåëàòü òàê, òû óêàçûâàåøü, áóôåð ñ òåêñòîì, íî òóò íè÷åãî íå ïèøåøü, èëè 0, òîãäà, åñëè ÷åëîâåê íà÷èíàåò ââîäèòü ñâîé, ñóùåñòâóþùèé òåêñò óæå áóäåò àâòîìàòîì çàòåðò.
  152. 53 - ïîëîæåíèå êóðñîðà - ãîâîðèì, ÷òî áû îí íàõîäèëñÿ â êîíöå ñòðî÷êè íà ïîñëåäíèì ñèìâîëå, áîëüøå ýòî çíà÷åíèå áûòü íå äîëæíî, ò.ê. èíà÷å ãëþêè :)))
  153. <DATA> - òóò ðàñïîëîæåí ñàì áóôôåð, + òåêñò.
  154. hed db 'EDITBOX optimization and retype <Lrz> date 09.03.2007',0 ; èòîãî 54 ñèìâîëà
  155. rb 256 ; 256+54 =310 ó ìåíÿ óêàçàí ðàçìåð 308 - 2 áàéòà íà ñèñòåèíûå íóæäû (ïî èäåå äîëæíî õâàòàòü îäíîãî, íî ãäå - òî åñòü êîñÿê â êîäå)
  156.  
  157. 2) Èçìåíÿòü ïîëîæåíèå ïðè èçìåíåíèè ðàçìåðîâ îêíà. Âîîáùå ýòî íå çàäà÷à editbox, íî ýòî äîñòàòî÷íî ïðîñòî ñäåëàòü,
  158. .width dd width
  159. .left dd left
  160. .top dd top
  161. Âîò ÷àñòü ñòóêòóðû.
  162.  
  163. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  164. ;DATA äàííûå
  165. editboxes:
  166. edit1 edit_box 168,5,10,0xffffff,0x6a9480,0,0,0,99,ed_buffer.2,ed_figure_only
  167. edit2 edit_box 250,5,30,0xffffff,0x6a9480,0,0xAABBCC,0,308,hed,ed_focus,53,53
  168. edit3 edit_box 35,5,50,0xffffff,0x6a9480,0,0,0,9,ed_buffer.3,ed_figure_only
  169. edit4 edit_box 16,5,70,0xffffff,0x6a9480,0,0,0,1,ed_buffer.4,ed_figure_only
  170. editboxes_end:
  171.  
  172.  
  173. À ýòî ïðèìåð èíèöèàëèçàöèè
  174. Èòàê ïîëó÷àåì
  175. lea eax, editboxes - â åàõ óêàçàòåëü íà äàííûå áîêñîâ.
  176. Äàëåå âíîñèì ïî àäðåñó
  177. mov dword [eax], íîâîå çíà÷åíèå width
  178. mov dword [eax+4], íîâîå çíà÷åíèå left
  179. mov dword [eax+8], íîâîå çíà÷åíèå top
  180.  
  181. Ýòî âñå äëÿ ïåðâîãî editbox
  182. äëÿ âòîðîãî
  183. add eax,ed_struc_size
  184. ; ýòî ðàçìåðíîñòü â áàéòàõ çàïèñè äëèííû îäíîãî editbox
  185. È ñíîâà
  186. mov dword [eax], íîâîå çíà÷åíèå width
  187. mov dword [eax+4], íîâîå çíà÷åíèå left
  188. mov dword [eax+8], íîâîå çíà÷åíèå top
  189. Ýòî óæå äëÿ âòîðîãî editbox
  190.  
  191. È òàê äàëåå ))).
  192. Íàäåþñü ÿ äëÿ òåáÿ ïðîÿñíèë îáùèé àëãîðèòì èçìåíåíèÿ