Subversion Repositories Kolibri OS

Rev

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

  1. Ðóêîâîäñòâî ïðîãðàììèñòà ïî èñïîëüçîâàíèþ ìàêðîñîâ äëÿ óíèâåðñàëüíîé çàãðóçêè áèáëèîòåêè/áèáëèîòåê
  2. îò 6 èþëÿ 2009ã.
  3.  
  4. Copyright (c) 2009, <Lrz>
  5. All rights reserved.
  6.  
  7.         Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
  8. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  9. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
  10. Neither the name of the <organization> nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
  11.  
  12.         THIS SOFTWARE IS PROVIDED BY Alexey Teplov aka <Lrz> ''AS IS'' AND ANY
  13. EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE MPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE  DISCLAIMED. IN NO EVENT SHALL <copyright holder> BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  14.         LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  15. *****************************************************************************Èçìåíåíèÿ:
  16.  
  17. Äîðàáîòàí ìàêðîñ, óáðàíû îãðàíè÷åíèÿ ïðè åãî èñïîëüçîâàíèè. Âûâîä ñîîáùåíèé îá îøèáêàõ ïðîèçâîäèòüñÿ â îòäåëüíîì ïîòîêå. Ïðè ïàêåòíîé îáðàáîòêå çàãðóçêè áèáëèîòåê, â íà÷àëå ôîðìèðóåòñÿ âñå ñîîáùåíèÿ îò áèáëèîòåê, êîòîðûå çàãðóæåíû ñ îøèáêàìè, è çàòåì ïðîèçâåäåí âûâîä íà ýêðàí îòäåëüíûì ïîòîêîì ñî âñåì ñïèñêîì îøèáîê.Ââåäåíèå:
  18.  
  19.          ïîñëåäíåå âðåìÿ íàìåòèëàñü òåíäåíöèÿ â ïåðåíîñå îñíîâíûõ, áàçîâûõ áëîêîâ (êîìïîíåíòîâ) â áèáëèîòåêè. Äëÿ ðàçðàáîò÷èêà ýòî ÿâëÿåòñÿ î÷åíü óäîáíî, ò.ê. ñðîêè ðàçðàáîòêè ïðîãðàììû çíà÷èòåëüíî ñîêðàùàþòñÿ. Ìàêðîñ load_lib.mac ðàçðàáàòûâàëñÿ êàê óíèâåðñàëüíûé äëÿ çàãðóçêè ëþáîãî êîëè÷åñòâà áèáëèîòåê. Îñîáåííîñòüþ åãî ÿâëÿåòñÿ òî, ÷òî åñëè áèáëèîòåêà íå ìîæåò áûòü íàéäåíà ïî óêàçàííîìó ïóòè, èëè ñóùåñòâóåò îøèáêà ïðè èìïîðòå, òî òîãäà, ôîðìèðóåòñÿ ñîîáùåíèå è âûâîäèòüñÿ â îêíå èíôîðìàöèÿ îá îøèáêå. Ïîèñê áèáëèîòåêè ïðîèñõîäèò ïî 2-ì íàïðàâëåíèÿì.  òåêóùåé ïàïêå, îòêóäà ñòàðòîâàëà ïðîãðàììà è â ñèñòåìíîé ïàïêå (ïî óêàçàííîìó ïóòè + íàçâàíèå áèáëèîòåêè).
  20. Ñòðóêòóðà ìàêðîñîâ:
  21.  
  22.         Ôàéë load_lib.mac ñîñòîèò èç 5 îñíîâíûõ ìàêðîñîâ.
  23. Äëÿ çàãðóçêè îäíîé áèáëèîòåêè ñóùåñòâóþò ìàêðîñû ïåðâîé ãðóïïû, íàçîâåì, åå ãðóïïà À.  Äëÿ çàãðóçêè îò 2-õ è áîëåå áèáëèîòåê ñîçäàíû ìàêðîñû ãðóïïû B. Íàçâàíèå ýòèõ ìàêðîñîâ:
  24.  
  25. A:
  26. sys_load_library
  27. load_library
  28. B:
  29. sys_load_libraries
  30. load_libraries
  31.  
  32.         Äëÿ ìàêðîñîâ ãðóïïû À íåîáõîäèìî â êà÷åñòâå ïàðàìåòðîâ óêàçàòü ñëåäóþùèå îïöèè:
  33. library_name, cur_dir_path, library_path, system_path, err_message_found_lib, head_f_l, myimport, err_message_import, head_f_i . Ñèíòàêñè÷åñêè ïðàâèëüíî èñïîëüçîâàòü ñëåäóþùèþ çàïèñü äëÿ ïðàâèëüíîãî ðàçâîðà÷èâàíèÿ ìàêðîñà:
  34.  
  35. sys_load_library library_name, cur_dir_path, library_path, system_path, err_message_found_lib, head_f_l, myimport, err_message_import, head_f_i
  36.  
  37. èëè
  38.  
  39. load_library library_name, cur_dir_path, library_path, system_path, err_message_found_lib, head_f_l, myimport, err_message_import, head_f_i
  40.  
  41.         Ðàçíèöà ìåæäó ýòèìè äâóìÿ ìàêðîñàìè òîëüêî â ïîðÿäêå ïðîâåðêè ïóòè ê áèáëèîòåêå.
  42. sys_load_library - â ïåðâóþ î÷åðåäü ïðîâåðÿåòñÿ çíà÷åíèå óêàçàííîå â system_path, ò.å. íà ýòîì ìåñòå ãäå íàõîäèòñÿ system_path äîëæåí áûòü ïîìåùåí àäðåñ çàïèñè.
  43.  
  44. Âñåãäà ñîáëþäàòü ïîñëåäîâàòåëüíîñòü â èìåíè.
  45. system_path      db '/sys/lib/'
  46. library_name     db 'box_lib.obj',0     ; òàêàÿ çàïèñü ñäåëàíà èç ýêîíîìèè ìåñòà
  47.  
  48. Åñëè åñòü æåëàíèå ðàçúåäèíèòü, òî íóæíî èñïîëüçîâàòü ñëåäóþùóþ êîíñòðóêöèþ
  49. system_path      db '/sys/lib/box_lib.obj',0
  50. ... ëþáàÿ ïîñëåäîâàòåëüíîñòü äðóãèõ êîìàíä è îïðåäåëåíèé.
  51. library_name     db 'box_lib.obj',0
  52.  
  53.  
  54. À load_library - â ïåðâóþ î÷åðåäü ïðîâåðÿåò òåêóùóþ ïàïêó, ò.å. èñïîëüçóåò ýòîò ïóòü äëÿ ïîèñêà áèáëèîòåêè.
  55.  
  56. library_name - èìÿ áèáëèîòåêè îáû÷íî â äàííûõ îïðåäåëÿåòñÿ êàê
  57. library_name     db 'box_lib.obj',0
  58.  
  59. Èíîãäà, âîçíèêàåò íåîáõîäèìîñòü çàãðóçêè áèáëèîòåêè ñ ïàïêè, êîòîðàÿ íàõîäèòüñÿ íèæå óðîâíåì äèðåêòîðèè, ñ êîòîðîé áûëà çàïóùåíà ïðîãðàììà. Äîïóñòèì, ñëåäóþùåå:
  60.  
  61.  
  62. Íåîáõîäèìàÿ íàì áèáëèîòåêà ðàñïîëîæåíà â ïàïêå ff2, äëÿ òîãî, ÷òî áû ìàêðîñ çàãðóçèë áèáëèîòåêó èç ýòîé ïàïêè, íàì íóæíî ñäåëàòü ñëåäóþùåå:
  63.  
  64. Îáðàùàþ âíèìàíèå, ÷òî êîðîòêàÿ çàïèñü â ýòîì ñëó÷àå íåâîçìîæíà, è íóæíî îïðåäåëèòü ñëåäóþùèå ïóòè ïîëíîñòüþ.
  65. system_path      db '/sys/lib/tread_lib.obj',0
  66. ;... ëþáàÿ ïîñëåäîâàòåëüíîñòü äðóãèõ êîìàíä è îïðåäåëåíèé.
  67. library_name     db 'ff2/tread_lib.obj',0
  68. - èìåííî òàêîå îïðåäåëåíèå èìåíè, ïîçâîëèò äèíàìè÷åñêè ñôîðìèðîâàòü ïóòü äî íàøåé áèáèëîòåêè.
  69.  
  70. cur_dir_path - ïåðâîíà÷àëüíî äîëæåí áûòü îïðåäåëåí â çàãîëîâêå ïðîãðàììû, êàê:
  71.  
  72. use32                   ; òðàíñëÿòîð, èñïîëüçóþùèé 32 ðàçðÿäíûõ êîìàíäû
  73.     org 0x0             ; áàçîâûé àäðåñ êîäà, âñåãäà 0x0
  74.     db 'MENUET01'       ; èäåíòèôèêàòîð èñïîëíÿåìîãî ôàéëà (8 áàéò)
  75.     dd 0x1              ; âåðñèÿ ôîðìàòà çàãîëîâêà èñïîëíÿåìîãî ôàéëà
  76.     dd start            ; àäðåñ, íà êîòîðûé ñèñòåìà ïåðåäà¸ò óïðàâëåíèå
  77.                         ; ïîñëå çàãðóçêè ïðèëîæåíèÿ â ïàìÿòü
  78.     dd i_end            ; ðàçìåð ïðèëîæåíèÿ
  79.     dd mem              ; Îáúåì èñïîëüçóåìîé ïàìÿòè, äëÿ ñòåêà îòâåäåì 0õ100 áàéò è âûðîâíèì íà ãðíèöó 4 áàéòà
  80.     dd mem              ; ðàñïîëîæèì ïîçèöèþ ñòåêà â îáëàñòè ïàìÿòè, ñðàçó çà òåëîì ïðîãðàììû. Âåðøèíà ñòåêà â äèàïàçîíå ïàìÿòè, óêàçàííîì âûøå
  81.     dd 0x0              ; óêàçàòåëü íà ñòðîêó ñ ïàðàìåòðàìè.
  82.     dd cur_dir_path     ; óêàçàòåëü íà àäðåñ, êóäà ïîìåùàåòñÿ ñòðîêà, ñîäåðæàùàÿ ïóòü äî ïðîãðàììû â ìîìåíò çàïóñêà.
  83. à çàòåì â ñåêöèè DATA ïðîãðàììû
  84.  
  85. cur_dir_path    rb 4096 ; çíà÷åíèå 4096 ìîæåò áûòü è ìåíüøå, íî äîëæíî âìåùàòü ïîëíîñòüþ ïóòü äî áèáëèîòåêè. Ò.å. ýòî áóôåð, â êîòîðîì ôîðìèðóåòñÿ ïóòü ïðè çàïóñêå ïðîãðàììû.
  86.  
  87. library_path - íà÷àëî áóôåðà, â êîòîðîì áóäåò ñôîðìèðîâàí ïóòü ïîëó÷åííûé ïðè çàïóñêå ïðîãðàììû ñ èìåíåì áèáëèîòåêè.
  88. library_path    rb 4096
  89.  
  90. system_path - ïóòü äî áèáëèîòåêè ñ èìåíåì áèáëèîòåêè. Ïðåäïîëàãàåì, ÷òî, òóò óêàçàí ïîëíûé ïóòü äî áèáëèîòåêè.
  91. Âñåãäà ñîáëþäàòü ïîñëåäîâàòåëüíîñòü â èìåíè.
  92. system_path      db '/sys/lib/'
  93. library_name     db 'box_lib.obj',0     ; òàêàÿ çàïèñü ñäåëàíà èç ýêîíîìèè ìåñòà
  94.  
  95. Åñëè åñòü æåëàíèå ðàçúåäèíèòü, òî íóæíî èñïîëüçîâàòü ñëåäóþùóþ êîíñòðóêöèþ
  96. system_path      db '/sys/lib/box_lib.obj',0
  97. ... ëþáàÿ ïîñëåäîâàòåëüíîñòü äðóãèõ êîìàíä è îïðåäåëåíèé.
  98. library_name     db 'box_lib.obj',0
  99.  
  100. err_message_found_lib - ñòðîêà, êîòîðàÿ áóäåò â ñôîðìèðîâàííîì îêíå, åñëè áèáëèîòåêà íå áóäåò íàéäåíà.
  101.  
  102. err_message_found_lib   db 'Sorry I cannot load library box_lib.obj',0
  103.  
  104. head_f_l -  çàãîëîâîê îêíà, ïðè âîçíèêíîâåíèè îøèáêè - áèáëèîòåêà íå íàéäåíà.
  105. head_f_l        db 'System error',0
  106.  
  107. myimport -  óêàçàòåëü íà èìïîðò ôóíêöèé èç áèáëèîòåêè.
  108. myimport:  
  109.  
  110. edit_box_draw   dd      aEdit_box_draw
  111. edit_box_key    dd      aEdit_box_key
  112. edit_box_mouse  dd      aEdit_box_mouse
  113. version_ed      dd      aVersion_ed
  114.  
  115. check_box_draw  dd      aCheck_box_draw
  116. check_box_mouse dd      aCheck_box_mouse
  117. version_ch      dd      aVersion_ch
  118.  
  119. option_box_draw  dd      aOption_box_draw
  120. option_box_mouse dd      aOption_box_mouse
  121. version_op       dd      aVersion_op
  122.  
  123.                 dd      0
  124.                 dd      0
  125.  
  126. aEdit_box_draw  db 'edit_box',0
  127. aEdit_box_key   db 'edit_box_key',0
  128. aEdit_box_mouse db 'edit_box_mouse',0
  129. aVersion_ed     db 'version_ed',0
  130.  
  131. aCheck_box_draw  db 'check_box_draw',0
  132. aCheck_box_mouse db 'check_box_mouse',0
  133. aVersion_ch      db 'version_ch',0
  134.  
  135. aOption_box_draw  db 'option_box_draw',0
  136. aOption_box_mouse db 'option_box_mouse',0
  137. aVersion_op       db 'version_op',0
  138.  
  139. err_message_import - ñòðîêà, êîòîðàÿ áóäåò â ñôîðìèðîâàííîì îêíå, åñëè ïðè èìïîðòå ôóíêöèé ïðîèçîøëà îøèáêà.
  140.  
  141. err_message_import      db 'Error on load import library box_lib.obj',0
  142.  
  143. head_f_i - çàãîëîâîê îêíà, ïðè âîçíèêíîâåíèè îøèáêè - îøèáêà èìïîðòà ôóíêöèé.
  144. head_f_i        db 'System error',0
  145.  
  146.         Ïîñëå òîãî, êàê ìàêðîñ áóäåò ðàñêðûò è îòðàáîòàåò ñâîþ ÷àñòü êîäà, ìîæíî óçíàòü îá óñïåøíîñòè èëè íå óñïåøíîñòè çàãðóçêè, èìïîðòå áèáëèîòåêè.  ðåãèñòðå åax ôîðìèðóåòñÿ 0 ïðè óñïåøíîé çàãðóçêå è èìïîðòå, èëè -1, åñëè íà ëþáîì èç ýòèõ ýòàïîâ âîçíèêëà îøèáêà. Ïðè âîçíèêíîâåíèè îøèáêè ðåêîìåíäóåòñÿ çàâåðøèòü âûïîëíåíèå ïðîãðàììû.
  147.         cmp     eax,-1
  148.         jz      exit
  149.  
  150. Ãðóïïà ìàêðîñîâ B
  151.  
  152.         Îñíîâíûì îòëè÷èåì ìàêðîñîâ ãðóïïû À, îò ãðóïïû B ÿâëÿåòñÿ áëî÷íàÿ (ïàêåòíàÿ) îáðàáîòêà çàãðóçêè áîëüøîãî êîëè÷åñòâå áèáëèîòåê. Òàê æå, áîëüøå èíôîðìàöèè ìîæíî ïîëó÷èòü ïîñëå îáðàáîòêè ïàêåòà. Òàê, ïðè ïàêåòíîé îáðàáîòêå ïîëó÷àåì êîä âîçâðàòà, êîòîðûé ñîäåðæèò 2 òèïà êîäîâ îøèáîê:
  153. Íå íàøëè ëèáó
  154. Íå ñìîãëè èìïîðòèðîâàòü ôóíêöèè.
  155.  
  156. B:
  157. sys_load_libraries
  158. load_libraries
  159.  
  160.         Äëÿ ìàêðîñîâ ãðóïïû B íåîáõîäèìî â êà÷åñòâå ïàðàìåòðîâ óêàçàòü ñëåäóþùèå îïöèè:
  161. íà÷àëî áëîêà äàííûõ ñòðóêòóð è êîíåö load_libraries l_libs_start,end_l_libs, ãäå
  162.  
  163. l_libs_start:
  164. library01  l_libs boxlib_name, path, file_name, system_dir, \
  165. er_message_found_lib, ihead_f_l, myimport, er_message_import, ihead_f_i
  166.  
  167. library02  l_libs plugin_BMP_name, path, file_name, system_dir1,\
  168. er_message_found_lib2, ihead_f_l, myimport, er_message_import2, ihead_f_i
  169. end_l_libs:
  170.  
  171. Âîò òàêàÿ çàïèñü
  172. library01  l_libs boxlib_name, path, file_name, system_dir, \
  173. er_message_found_lib, ihead_f_l, myimport, er_message_import, ihead_f_i
  174. ðàñêðûâàåòñÿ â ñëåäóþùåå:
  175.  
  176. .library_name   dd library_name
  177. .cur_dir_path   dd cur_dir_path
  178. .library_path   dd library_path
  179. .system_path    dd system_path
  180. .err_message_found_lib   dd err_message_found_lib
  181. .head_f_l       dd head_f_l
  182. .my_import      dd my_import
  183. .err_message_import      dd err_message_import
  184. .head_f_i       dd head_f_i
  185. ;âûøå ïîëíîñòüþ ñîîòâåòñòâóåò çíà÷åíèÿì äëÿ ïàðàìåòðîâ ãðóïïû ìàêðîñîâ À.
  186. .adr_load_lib   dd 0x0          ; àäðåñ çàãðóæåííîé áèáëèîòåêè
  187. .status_lib     dd 0x0          ;status of load library - ñòàòóñ êîäû ìîãóò ïðèíèìàòü çíà÷åíèå 0 - óñïåøíî, 0õ1 - îøèáêà ïîèñêà áèáëèîòåêè, 0õ2 - îøèáêà èìïîðòà ôóíêöèé.
  188.  
  189. Åñëè íóæíî óçíàòü ïðîãðàììå, êàê çàãðóçèëàñü áèáëèîòåêà, èñïîëüçóåì ñëåäóþùóþ ïðîâåðêó:
  190.  
  191. ;ïðîâåðêà íà ñêîëüêî óäà÷íî çàãðóçèëàñü íàøà áèáëèîòåêà
  192.         mov     ebp,library01 - ìåòêà ñòðóêòóðû
  193.         cmp     dword [ebp+ll_struc_size-4],0 ; òóò ïðîâåðÿåì êîä ñòàòóñà âîçâðàòà
  194.         jnz     exit ;åñëè íå 0, òî óõîäèì.
  195.  
  196.  
  197. ;ïîëó÷åíèå àäðåñà çàãðóæåííîé áèáëèîòåêè
  198.         mov     ebp,library01 - ìåòêà ñòðóêòóðû
  199.         cmp     dword [ebp+ll_struc_size-4],0 ; òóò ïðîâåðÿåì êîä ñòàòóñà âîçâðàòà
  200.         jnz     exit ;åñëè íå 0, òî óõîäèì.
  201.         mov     ebp, dword [ebp+ll_struc_size-8] - â ebp àäðåñ íà÷àëà.
  202.  
  203. Ìàêîðîñ @use_library
  204.  
  205. Ýòîò ìàêðîñ ïðåäñòàâëÿåò âûçûâàåìûå ïðîöåäóðû, êîòîðûå èñïîëüçóþòñÿ äëÿ ðàáîòû ãðóïï ìàêðîñîâ À è B. Äàííûé ìàêðîñ ðàñïîëàãàåòñÿ â ñåêöèè äàòà. Èñïîëüçîâàíèå äàííîãî ìàêðîñà îáÿçàòåëüíî.
  206.  
  207.  
  208. Êàê ÿ ìîãó èñïîëüçîâàòü ìàêðîñ çàãðóçêè áèáëèîòåêè/áèáëèîòåê â ñâîåé ïðîãðàììå?
  209.  
  210. Îáùèé øàáëîí äëÿ èñïîëüçîâàíèÿ áèáëèîòåêè òàêîé:
  211.  
  212. use32                ; òðàíñëÿòîð, èñïîëüçóþùèé 32 ðàçðÿäíûõ êîìàíäû
  213.     org 0x0                ; áàçîâûé àäðåñ êîäà, âñåãäà 0x0
  214.     db 'MENUET01'        ; èäåíòèôèêàòîð èñïîëíÿåìîãî ôàéëà (8 áàéò)
  215.     dd 0x1                ; âåðñèÿ ôîðìàòà çàãîëîâêà èñïîëíÿåìîãî ôàéëà
  216.     dd start                ; àäðåñ, íà êîòîðûé ñèñòåìà ïåðåäà¸ò óïðàâëåíèå
  217.                         ; ïîñëå çàãðóçêè ïðèëîæåíèÿ â ïàìÿòü
  218.     dd i_end                ; ðàçìåð ïðèëîæåíèÿ
  219.     dd mem                  ; Îáúåì èñïîëüçóåìîé ïàìÿòè, äëÿ ñòåêà îòâåäåì 0õ100 áàéò è âûðîâíèì íà ãðíèöó 4 áàéòà
  220.     dd mem                  ; ðàñïîëîæèì ïîçèöèþ ñòåêà â îáëàñòè ïàìÿòè, ñðàçó çà òåëîì ïðîãðàììû. Âåðøèíà ñòåêà â äèàïàçîíå ïàìÿòè, óêàçàííîì âûøå
  221.     dd 0x0              ; óêàçàòåëü íà ñòðîêó ñ ïàðàìåòðàìè.
  222.     dd cur_dir_path
  223. include 'macros.inc'
  224. include 'editbox_ex.mac'
  225. include 'load_lib.mac'
  226.         @use_library    ;use load lib macros
  227. start:
  228. ;universal load library/librarys
  229. sys_load_library  library_name, cur_dir_path, library_path, system_path, \
  230. err_message_found_lib, head_f_l, myimport, err_message_import, head_f_i
  231. ;if return code =-1 then exit, else nornary work
  232.         cmp     eax,-1
  233.         jz      exit
  234.         mcall   40,0x27         ;óñòàíîâèòü ìàñêó äëÿ îæèäàåìûõ ñîáûòèé
  235. red_win:
  236.     call draw_window            ;ïåðâîíà÷àëüíî íåîáõîäèìî íàðèñîâàòü îêíî
  237. align 4
  238. still:                          ;îñíîâíîé îáðàáîò÷èê
  239.         mcall   10              ;Îæèäàòü ñîáûòèÿ
  240.         dec  eax
  241.         jz   red_win
  242.         dec  eax
  243.         jz   key
  244.         dec  eax
  245.         jz   button
  246.  
  247.         push    dword edit1
  248.         call    [edit_box_mouse]
  249.  
  250.         push    dword edit2
  251.         call    [edit_box_mouse]
  252.  
  253.         push    dword check1
  254.         call    [check_box_mouse]
  255.  
  256.         push    dword check2
  257.         call    [check_box_mouse]
  258.  
  259.         push    dword Option_boxs
  260.         call    [option_box_mouse]
  261.  
  262.         push    dword Option_boxs2
  263.         call    [option_box_mouse]
  264.  
  265.         jmp still    ;åñëè íè÷åãî èç ïåðå÷èñëåííîãî òî ñíîâà â öèêë
  266. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  267. button:
  268.         mcall   17      ;ïîëó÷èòü èäåíòèôèêàòîð íàæàòîé êëàâèøè
  269.         test ah,ah      ;åñëè â ah 0, òî ïåðåéòè íà îáðàáîò÷èê ñîáûòèé still
  270.         jz  still
  271. exit:   mcall   -1
  272. key:
  273.         mcall   2       ;çàãðóçèì çíà÷åíèå 2 â ðåãèñòîð eax è ïîëó÷èì êîä íàæàòîé êëàâèøè
  274.  
  275.         push    dword edit1
  276.         call    [edit_box_key]
  277.  
  278.         push    dword edit2
  279.         call    [edit_box_key]
  280.  
  281.         jmp still
  282.  
  283. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  284. align 4
  285. draw_window:            ;ðèñîâàíèå îêíà ïðèëîæåíèÿ
  286.         mcall   12,1
  287.         mcall   0,(50*65536+390),(30*65536+200),0x33AABBCC,0x805080DD,hed
  288.  
  289.         push    dword edit1
  290.         call    [edit_box_draw]
  291.  
  292.         push    dword edit2
  293.         call    [edit_box_draw]
  294.  
  295.         push    dword check1
  296.         call    [check_box_draw]
  297.  
  298.         push    dword check2
  299.         call    [check_box_draw]
  300.  
  301.         push    dword Option_boxs
  302.         call    [option_box_draw]        
  303.  
  304.         push    dword Option_boxs2
  305.         call    [option_box_draw]
  306.  
  307.         mcall   12,2
  308.     ret
  309. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  310. ;DATA äàííûå
  311. ;Âñåãäà ñîáëþäàòü ïîñëåäîâàòåëüíîñòü â èìåíè.
  312. system_path      db '/sys/lib/'
  313. library_name     db 'box_lib.obj',0
  314. ; Åñëè åñòü æåëàíèå ðàçúåäèíèòü, òî íóæíî èñïîëüçîâàòü ñëåäóþùèþ êîíñòðóêöèþ
  315. ;system_path      db '/sys/lib/box_lib.obj',0
  316. ;... ëþáàÿ ïîñëåäîâàòåëüíîñòü äðóãèõ êîìàíä è îïðåäåëåíèé.
  317. ;library_name     db 'box_lib.obj',0
  318. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  319.  
  320. err_message_found_lib   db 'Sorry I cannot load library box_lib.obj',0
  321. head_f_i:
  322. head_f_l        db 'System error',0
  323. err_message_import      db 'Error on load import library box_lib.obj',0
  324.  
  325. myimport:  
  326.  
  327. edit_box_draw   dd      aEdit_box_draw
  328. edit_box_key    dd      aEdit_box_key
  329. edit_box_mouse  dd      aEdit_box_mouse
  330. version_ed      dd      aVersion_ed
  331.  
  332. check_box_draw  dd      aCheck_box_draw
  333. check_box_mouse dd      aCheck_box_mouse
  334. version_ch      dd      aVersion_ch
  335.  
  336. option_box_draw  dd      aOption_box_draw
  337. option_box_mouse dd      aOption_box_mouse
  338. version_op       dd      aVersion_op
  339.  
  340.                 dd      0
  341.                 dd      0
  342.  
  343. aEdit_box_draw  db 'edit_box',0
  344. aEdit_box_key   db 'edit_box_key',0
  345. aEdit_box_mouse db 'edit_box_mouse',0
  346. aVersion_ed     db 'version_ed',0
  347.  
  348. aCheck_box_draw  db 'check_box_draw',0
  349. aCheck_box_mouse db 'check_box_mouse',0
  350. aVersion_ch      db 'version_ch',0
  351.  
  352. aOption_box_draw  db 'option_box_draw',0
  353. aOption_box_mouse db 'option_box_mouse',0
  354. aVersion_op       db 'version_op',0
  355.  
  356.  
  357.  
  358.  
  359. check1 check_box 10,45,6,12,0x80AABBCC,0,0,check_text,14,ch_flag_en
  360. check2 check_box 10,60,6,12,0x80AABBCC,0,0,check_text2,15
  361.  
  362. edit1 edit_box 350,3,5,0xffffff,0x6f9480,0,0xAABBCC,0,308,hed,ed_focus,hed_end-hed-1,hed_end-hed-1
  363. edit2 edit_box 350,3,25,0xffffff,0x6a9480,0,0,0,99,ed_buffer,ed_figure_only
  364.  
  365. op1 option_box option_group1,10,90,6,12,0xffffff,0,0,op_text.1,op_text.e1-op_text.1
  366. op2 option_box option_group1,10,105,6,12,0xFFFFFF,0,0,op_text.2,op_text.e2-op_text.2
  367. op3 option_box option_group1,10,120,6,12,0xffffff,0,0,op_text.3,op_text.e3-op_text.3
  368. op11 option_box option_group2,120,90,6,12,0xffffff,0,0,op_text.1,op_text.e1-op_text.1
  369. op12 option_box option_group2,120,105,6,12,0xffffff,0,0,op_text.2,op_text.e2-op_text.2
  370. op13 option_box option_group2,120,120,6,12,0xffffff,0,0,op_text.3,op_text.e3-op_text.3
  371.  
  372. option_group1   dd op1  ;óêàçàòåëè, îíè îòîáðàæàþòñÿ ïî óìîë÷àíèþ, êîãäà âûâîäèòñÿ
  373. option_group2   dd op12 ;ïðèëîæåíèå
  374. Option_boxs     dd  op1,op2,op3,0
  375. Option_boxs2    dd  op11,op12,op13,0
  376. hed db   'BOXs load from lib <Lrz> date 27.04.2009',0
  377. hed_end:
  378. rb  256
  379. check_text db 'First checkbox'
  380. check_text2 db 'Second checkbox'
  381. op_text:                ; Ñîïðîâîæäàþùèé òåêñò äëÿ ÷åê áîêñîâ
  382. .1 db 'Option_Box #1'
  383. .e1:
  384. .2 db 'Option_Box #2'
  385. .e2:
  386. .3 db 'Option_Box #3'
  387. .e3:
  388. ed_buffer       rb 100
  389. ;-----------------------
  390. ;sc      system_colors
  391. p_info  process_information
  392. cur_dir_path    rb 4096
  393. library_path    rb 4096
  394. i_end:
  395. rb 1024
  396. mem: