Subversion Repositories Kolibri OS

Rev

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

  1. ;Распространяется по лицензии GPL  SEE YOU File FAQ.txt and HISTORY. Good Like!
  2. ;Оптимизированный компонент EditBox (Исходный вариант от Maxxxx32)
  3. ;Оптимизация команд.
  4. ;<Lrz>  - Теплов Алексей  www.lrz.land.ru
  5. ;заголовок приложения
  6.         include '..\..\..\..\macros.inc'
  7. ;        include 'macros.inc'
  8.         include 'editbox.inc'
  9. meos_app_start
  10. align 4
  11.         use_edit_box procinfo,22,5
  12. ;Область кода
  13. code
  14. ;start:                          ;Точка входа в программу
  15.         mcall   40,0x27         ;установить маску для ожидаемых событий
  16.  ;система будет реагировать только на сообщение о перерисовке,нажата кнопка, определённая ранее, событие от мыши (что-то случилось - нажатие на кнопку мыши или перемещение; сбрасывается при прочтении) и нажатие клавиши
  17. red_win:
  18.     call draw_window            ;первоначально необходимо нарисовать окно
  19. align 4
  20. still:                          ;основной обработчик
  21.         mcall   10              ;Ожидать события
  22.         cmp al,0x1    ;если изменилось положение окна
  23.         jz red_win
  24.         cmp al,0x2    ;если нажата клавиша то перейти
  25.         jz key
  26.         cmp al,0x3    ;если нажата кнопка то перейти
  27.         jz button
  28.         mouse_edit_boxes editboxes,editboxes_end
  29.         jmp still    ;если ничего из перечисленного то снова в цикл
  30. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  31. button:
  32.         mcall   17      ;получить идентификатор нажатой клавиши
  33.         test ah,ah              ;если в ah 0, то перейти на обработчик событий still
  34.         jz  still
  35.         mcall   -1
  36. key:
  37.         mcall   2       ;загрузим значение 2 в регистор eax и получим код нажатой клавиши
  38.         key_edit_boxes editboxes,editboxes_end    
  39.     jmp still
  40.  
  41. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  42. align 4
  43. draw_window:            ;рисование окна приложения
  44.         mcall   12,1
  45.         mcall   0,(50*65536+390),(30*65536+200),0xb3AABBCC,0x805080DD,hed
  46.         draw_edit_boxes editboxes,editboxes_end,use_f9,procinfo  ;рисование edit box'ов
  47.         mcall   12,2
  48.     ret
  49. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  50. ;DATA данные
  51. editboxes:
  52. edit1 edit_box 168,5,10,0xffffff,0x6a9480,0,0,0,99,ed_buffer.2,ed_figure_only
  53. edit2 edit_box 250,5,30,0xffffff,0x6a9480,0,0xAABBCC,0,308,hed,ed_focus,53,53
  54. edit3 edit_box 35,5,50,0xffffff,0x6a9480,0,0,0,9,ed_buffer.3,ed_figure_only
  55. edit4 edit_box 16,5,70,0xffffff,0x6a9480,0,0,0,1,ed_buffer.4,ed_figure_only
  56. editboxes_end:
  57. data_of_code dd 0
  58. mouse_flag dd 0x0
  59. hed db   'EDITBOX optimization and retype <Lrz> date 14.05.2007',0
  60. rb  256
  61. ed_buffer:
  62. ;.1: rb 514;256
  63. .2: rb 101
  64. .3: rb 11
  65. .4: rb 3
  66. ;два запасных байта необходимы для того что бы не пепереписать следующией байты, в конце буфера 0
  67. buffer_end:
  68. align 16
  69. procinfo process_information
  70. meos_app_end  
  71. udata