Subversion Repositories Kolibri OS

Rev

Rev 1064 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. ;заголовок приложения
  2. use32                ; транслятор, использующий 32 разрядных команды
  3.     org 0x0                ; базовый адрес кода, всегда 0x0
  4.     db 'MENUET01'        ; идентификатор исполняемого файла (8 байт)
  5.     dd 0x1                ; версия формата заголовка исполняемого файла
  6.     dd start                ; адрес, на который система передаёт управление
  7.                         ; после загрузки приложения в память
  8.     dd i_end                ; размер приложения
  9.     dd mem                  ; Объем используемой памяти, для стека отведем 0х100 байт и выровним на грницу 4 байта
  10.     dd mem                  ; расположим позицию стека в области памяти, сразу за телом программы. Вершина стека в диапазоне памяти, указанном выше
  11.     dd 0x0              ; указатель на строку с параметрами.
  12.     dd cur_dir_path
  13. include 'macros.inc'
  14. include 'editbox_ex.mac'
  15. include 'load_lib.mac'
  16.         @use_library    ;use load lib macros
  17. start:
  18. ;universal load library/librarys
  19. sys_load_library  library_name, cur_dir_path, library_path, system_path, \
  20. err_message_found_lib, head_f_l, myimport, err_message_import, head_f_i
  21. ;if return code =-1 then exit, else nornary work
  22.         cmp     eax,-1
  23.         jz      exit
  24.         mcall   40,0x27         ;установить маску для ожидаемых событий
  25. red_win:
  26.     call draw_window            ;первоначально необходимо нарисовать окно
  27. align 4
  28. still:                          ;основной обработчик
  29.         mcall   10              ;Ожидать события
  30.         dec  eax
  31.         jz   red_win
  32.         dec  eax
  33.         jz   key
  34.         dec  eax
  35.         jz   button
  36.  
  37.         push    dword edit1
  38.         call    [edit_box_mouse]
  39.  
  40.         push    dword edit2
  41.         call    [edit_box_mouse]
  42.  
  43.         push    dword check1
  44.         call    [check_box_mouse]
  45.  
  46.         push    dword check2
  47.         call    [check_box_mouse]
  48.  
  49.         push    dword Option_boxs
  50.         call    [option_box_mouse]
  51.  
  52.         push    dword Option_boxs2
  53.         call    [option_box_mouse]
  54.  
  55.         jmp still    ;если ничего из перечисленного то снова в цикл
  56. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  57. button:
  58.         mcall   17      ;получить идентификатор нажатой клавиши
  59.         test ah,ah      ;если в ah 0, то перейти на обработчик событий still
  60.         jz  still
  61. exit:   mcall   -1
  62. key:
  63.         mcall   2       ;загрузим значение 2 в регистор eax и получим код нажатой клавиши
  64.  
  65.         push    dword edit1
  66.         call    [edit_box_key]
  67.  
  68.         push    dword edit2
  69.         call    [edit_box_key]
  70.  
  71.         jmp still
  72.  
  73. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  74. align 4
  75. draw_window:            ;рисование окна приложения
  76.         mcall   12,1
  77.         mcall   0,(50*65536+390),(30*65536+200),0x33AABBCC,0x805080DD,hed
  78.  
  79.         push    dword edit1
  80.         call    [edit_box_draw]
  81.  
  82.         push    dword edit2
  83.         call    [edit_box_draw]
  84.  
  85.         push    dword check1
  86.         call    [check_box_draw]
  87.  
  88.         push    dword check2
  89.         call    [check_box_draw]
  90.  
  91.         push    dword Option_boxs
  92.         call    [option_box_draw]        
  93.  
  94.         push    dword Option_boxs2
  95.         call    [option_box_draw]
  96.  
  97.         mcall   12,2
  98.     ret
  99. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  100. ;DATA данные
  101. ;Всегда соблюдать последовательность в имени.
  102. system_path      db '/sys/lib/'
  103. library_name     db 'box_lib.obj',0
  104. ; Если есть желание разъединить, то нужно использовать следующию конструкцию
  105. ;system_path      db '/sys/lib/box_lib.obj',0
  106. ;... любая последовательность других команд и определений.
  107. ;library_name     db 'box_lib.obj',0
  108. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  109.  
  110. err_message_found_lib   db 'Sorry I cannot load library box_lib.obj',0
  111. head_f_i:
  112. head_f_l        db 'System error',0
  113. err_message_import      db 'Error on load import library box_lib.obj',0
  114.  
  115. myimport:  
  116.  
  117. edit_box_draw   dd      aEdit_box_draw
  118. edit_box_key    dd      aEdit_box_key
  119. edit_box_mouse  dd      aEdit_box_mouse
  120. version_ed      dd      aVersion_ed
  121.  
  122. check_box_draw  dd      aCheck_box_draw
  123. check_box_mouse dd      aCheck_box_mouse
  124. version_ch      dd      aVersion_ch
  125.  
  126. option_box_draw  dd      aOption_box_draw
  127. option_box_mouse dd      aOption_box_mouse
  128. version_op       dd      aVersion_op
  129.  
  130.                 dd      0
  131.                 dd      0
  132.  
  133. aEdit_box_draw  db 'edit_box',0
  134. aEdit_box_key   db 'edit_box_key',0
  135. aEdit_box_mouse db 'edit_box_mouse',0
  136. aVersion_ed     db 'version_ed',0
  137.  
  138. aCheck_box_draw  db 'check_box_draw',0
  139. aCheck_box_mouse db 'check_box_mouse',0
  140. aVersion_ch      db 'version_ch',0
  141.  
  142. aOption_box_draw  db 'option_box_draw',0
  143. aOption_box_mouse db 'option_box_mouse',0
  144. aVersion_op       db 'version_op',0
  145.  
  146.  
  147.  
  148.  
  149. check1 check_box 10,45,6,12,0x80AABBCC,0,0,check_text,14,ch_flag_en
  150. check2 check_box 10,60,6,12,0x80AABBCC,0,0,check_text2,15
  151.  
  152. edit1 edit_box 350,3,5,0xffffff,0x6f9480,0,0xAABBCC,0,308,hed,ed_focus,hed_end-hed-1,hed_end-hed-1
  153. edit2 edit_box 350,3,25,0xffffff,0x6a9480,0,0,0,99,ed_buffer,ed_figure_only
  154.  
  155. op1 option_box option_group1,10,90,6,12,0xffffff,0,0,op_text.1,op_text.e1-op_text.1
  156. op2 option_box option_group1,10,105,6,12,0xFFFFFF,0,0,op_text.2,op_text.e2-op_text.2
  157. op3 option_box option_group1,10,120,6,12,0xffffff,0,0,op_text.3,op_text.e3-op_text.3
  158. op11 option_box option_group2,120,90,6,12,0xffffff,0,0,op_text.1,op_text.e1-op_text.1
  159. op12 option_box option_group2,120,105,6,12,0xffffff,0,0,op_text.2,op_text.e2-op_text.2
  160. op13 option_box option_group2,120,120,6,12,0xffffff,0,0,op_text.3,op_text.e3-op_text.3
  161.  
  162. option_group1   dd op1  ;указатели, они отображаются по умолчанию, когда выводится
  163. option_group2   dd op12 ;приложение
  164. Option_boxs     dd  op1,op2,op3,0
  165. Option_boxs2    dd  op11,op12,op13,0
  166. hed db   'BOXs load from lib <Lrz> date 27.04.2009',0
  167. hed_end:
  168. rb  256
  169. check_text db 'First checkbox'
  170. check_text2 db 'Second checkbox'
  171. op_text:                ; Сопровождающий текст для чек боксов
  172. .1 db 'Option_Box #1'
  173. .e1:
  174. .2 db 'Option_Box #2'
  175. .e2:
  176. .3 db 'Option_Box #3'
  177. .e3:
  178. ed_buffer       rb 100
  179. ;-----------------------
  180. ;sc      system_colors
  181. p_info  process_information
  182. cur_dir_path    rb 4096
  183. library_path    rb 4096
  184. i_end:
  185. rb 1024
  186. mem: