Subversion Repositories Kolibri OS

Rev

Rev 772 | 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.  
  88.  
  89. Êàê ïîä âàðèàíò ñóùåñòâóåò ìàêðîñ
  90. draw_edit_box - îí èñïîëüçóåòñÿ åñëè âûâîäèòñÿ îäèí áîêñ
  91. Ïåðåäàâàåìûé ïàðàìåòð
  92. editboxes - óêàçàòåëü íà èíôîðìàöèîííóþ ñòðóêòóðó áîêñîâ
  93. Áîëüøå íèêàêèõ ïàðàìåòðîâ ïåðåäàâàòü íå íóæíî.
  94. **********
  95. default_box - ìàêðîñ êîòîðûé ïðèâîäèò îñíîâíûå äàííûå ìàêðîñà ïî äåôîëòó ò.å. Ñíèìàåò áèòîâóþ ìàòðèöó âûäåëåíèÿ
  96. Ñïåöèàëüíî äëÿ KFM :)) Íóæíî äîáàâèòü ýòîò êîä ïðè îáðàáîò÷èêå yes or no ïðè êîïèðîâàíèè. Åñëè áóäåò âåñòè ñåáÿ íåàäåêâàòíî - íåîáõîäèìî ðàñêîììåíòèðîâàòü ñòðîêè â äàííîì ìàêðîñå
  97. òàê çà âñå âðåìÿ è íå áûë èñïîëüçîâàí â KFM
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104. Q:
  105. Âîçíèêëà ïàðà ïðîáëåì:
  106. 1) Äëèíà ìàêñèìàëüíî íàáèðàåìîãî òåêñòà íè÷åì íå îãðàíè÷åíà, â ðåçóëüòàòå ïðè ïðåâûøåíèè ðàçìåðà áóôåðà çàòèðàþòñÿ äàííûå, êîòîðûå èäóò ïîñëå áóôåðà èëè êîä, åñëè îí òàì ðàñïîëîæåí.
  107. 2) Ïîëîæåíèå ýëåìåíòà ôèêñèðîâàíî, õîòåëîñü áû ðàáîòàòü ñ äèíàìè÷åñêè âû÷èñëÿåìûìè çíà÷åíèÿìè. Íàïðèìåð, åñëè ðàçìåð îêíà èçìåíèëñÿ, à ýëåìåíò äîëæåí ðàñïîëàãàòüñÿ ïî öåíòðó îêíà âñåãäà.
  108.  
  109. A:
  110. 1) Äëèíà íàáèðàåìîãî òåêñòà îãðàíè÷åíà, âîò ñìîòðè:
  111. edit2 edit_box 250,5,30,0xffffff,0,0,0,308,hed,ed_focus,53 - ýòî ïðèìåð èíèöèàëèçàöèè editbox
  112. Èòàê, ïî ïîðÿäêó:
  113. Ýòî ìàêðîñ èíèöèàëèçàöèè ñòðóêòóðû
  114. struc edit_box width,left,top,color,focus_border_color,blur_border_color,text_color,max,text,flags,size
  115. {
  116. .width dd width
  117. .left dd left
  118. .top dd top
  119. .color dd color
  120. .focus_border_color dd focus_border_color
  121. .blur_border_color dd blur_border_color
  122. .text_color dd text_color
  123. .max dd max
  124. .text dd text
  125. .flags dd flags+0
  126. .size dd size+0
  127. .pos dd 0 - ãäå áóäåò íàõîäèòüñÿ êóðñîð
  128. .offset dd 0
  129. .cl_curs_x dd 0
  130. .cl_curs_y dd 0
  131. .shift dd 0
  132. .shift_old dd 0
  133. }
  134. 250 - ýòî äëèííà editbox width
  135. 5 - îòñòóï îò ëåâîãî êðàÿ left
  136. 30 - îòñòóï ñ âåðõà top
  137. 0xffffff - öâåò âíóòðè editbox
  138. 0x6a9480 - öâåò ïðè âûäåëåíèè ìûøêîé èëè ïî shift
  139. 0 - focus_border_color öâåò ðàìêè editbox, êîãäà â ôîêóñå ò.å. àêòèâåí editbox
  140. 0 - blur_border_color öâåò ðàìêè editbox, êîãäà â íå ôîêóñå ò.å. íå àêòèâåí editbox
  141. 0 - text_color öâåò òåêñòà editbox.
  142. 308 - max ìàêñèìàëüíîå êîë-âî òåêñòà, êîòîðîå ìîæíî ââåñòè (îòâåò íà òâîé âîïðîñ, îáðàòè âíèìàíèå íà òî, ÷òî ýòî çíà÷åíèå äîëæíî áûòü ìåíüøå íà 2, ÷åì ðàçìåð áóôåðà!! Èíà÷å ó òåáÿ áóäóò çàòåðòû 2 áàéòà ñëåäóþùèå ïîñëå áóôåðà!)
  143. hed - tex óêàçàòåëü íà íà÷àëî áóôåðà
  144. ed_focus - ôëàã(è0 â äàííîì ñëó÷àå óñòàíîâèòü ôîêóñ ýòîìó Editbox'ó - flags
  145. 53 - òåêóùåå çíà÷åíèå ðàçìåðà size. åãî íåîáõîäèìî óêàçûâàòü, åñëè òåáå íóæíî óæå îòîáðàæàòü ñóùåñòâóþùèé òåêñò. Èëè ìîæíî åùå ñäåëàòü òàê, òû óêàçûâàåøü, áóôåð ñ òåêñòîì, íî òóò íè÷åãî íå ïèøåøü, èëè 0, òîãäà, åñëè ÷åëîâåê íà÷èíàåò ââîäèòü ñâîé, ñóùåñòâóþùèé òåêñò óæå áóäåò àâòîìàòîì çàòåðò.
  146. 53 - ïîëîæåíèå êóðñîðà - ãîâîðèì, ÷òî áû îí íàõîäèëñÿ â êîíöå ñòðî÷êè íà ïîñëåäíèì ñèìâîëå, áîëüøå ýòî çíà÷åíèå áûòü íå äîëæíî, ò.ê. èíà÷å ãëþêè :)))
  147. <DATA> - òóò ðàñïîëîæåí ñàì áóôåð, + òåêñò.
  148. hed db 'EDITBOX optimization and retype <Lrz> date 09.03.2007',0 ; èòîãî 54 ñèìâîëà
  149. rb 256 ; 256+54 =310 ó ìåíÿ óêàçàí ðàçìåð 308 - 2 áàéòà íà ñèñòåìíûå íóæäû (ïî èäåå äîëæíî õâàòàòü îäíîãî, íî ãäå - òî åñòü êîñÿê â êîäå)
  150.  
  151. 2) Èçìåíÿòü ïîëîæåíèå ïðè èçìåíåíèè ðàçìåðîâ îêíà. Âîîáùå ýòî íå çàäà÷à editbox, íî ýòî äîñòàòî÷íî ïðîñòî ñäåëàòü,
  152. .width dd width
  153. .left dd left
  154. .top dd top
  155. Âîò ÷àñòü ñòðóêòóðû.
  156.  
  157. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  158. ;DATA äàííûå
  159. editboxes:
  160. edit1 edit_box 168,5,10,0xffffff,0x6a9480,0,0,0,99,ed_buffer.2,ed_figure_only
  161. edit2 edit_box 250,5,30,0xffffff,0x6a9480,0,0xAABBCC,0,308,hed,ed_focus,53,53
  162. edit3 edit_box 35,5,50,0xffffff,0x6a9480,0,0,0,9,ed_buffer.3,ed_figure_only
  163. edit4 edit_box 16,5,70,0xffffff,0x6a9480,0,0,0,1,ed_buffer.4,ed_figure_only
  164. editboxes_end:
  165.  
  166.  
  167. À ýòî ïðèìåð èíèöèàëèçàöèè
  168. Èòàê ïîëó÷àåì
  169. lea eax, editboxes - â åàõ óêàçàòåëü íà äàííûå áîêñîâ.
  170. Äàëåå âíîñèì ïî àäðåñó
  171. mov dword [eax], íîâîå çíà÷åíèå width
  172. mov dword [eax+4], íîâîå çíà÷åíèå left
  173. mov dword [eax+8], íîâîå çíà÷åíèå top
  174.  
  175. Ýòî âñå äëÿ ïåðâîãî editbox
  176. äëÿ âòîðîãî
  177. add eax,ed_struc_size
  178. ; ýòî ðàçìåðíîñòü â áàéòàõ çàïèñè äëèííû îäíîãî editbox
  179. È ñíîâà
  180. mov dword [eax], íîâîå çíà÷åíèå width
  181. mov dword [eax+4], íîâîå çíà÷åíèå left
  182. mov dword [eax+8], íîâîå çíà÷åíèå top
  183. Ýòî óæå äëÿ âòîðîãî editbox
  184.  
  185. È òàê äàëåå ))).
  186. Íàäåþñü, ÿ äëÿ òåáÿ ïðîÿñíèë îáùèé àëãîðèòì èçìåíåíèÿ
  187.