Subversion Repositories Kolibri OS

Rev

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

  1. //BOX_LIB
  2. //Lrz - 2008
  3.  
  4. dword edit_box_draw = #aEdit_box_draw;
  5. dword edit_box_key  = #aEdit_box_key;
  6. dword edit_box_mouse = #aEdit_box_mouse;
  7.  
  8.  
  9. dword  am__ = 0x0;
  10. dword  bm__ = 0x0;
  11.  
  12. char aEdit_box_draw[9]  = "edit_box\0";
  13. char aEdit_box_key[13] = "edit_box_key\0";
  14. char aEdit_box_mouse[15] = "edit_box_mouse\0";
  15.  
  16.  
  17.  
  18. struct edit_box{
  19. dword width, left, top, color, shift_color, focus_border_color, blur_border_color,
  20. text_color, max, text, mouse_variable, flags, size, pos, offset, cl_curs_x, cl_curs_y, shift, shift_old;
  21. };
  22.  
  23. //ed_width        equ [edi]               ;ширина компонента
  24. //ed_left         equ [edi+4]             ;положение по оси х
  25. //ed_top          equ [edi+8]             ;положение по оси у
  26. //ed_color        equ [edi+12]            ;цвет фона компонента
  27. //shift_color     equ [edi+16]            ;=0x6a9480
  28. //ed_focus_border_color   equ [edi+20]    ;цвет рамки компонента
  29. //ed_blur_border_color    equ [edi+24]    ;цвет не активного компонента
  30. //ed_text_color   equ [edi+28]            ;цвет текста
  31. //ed_max          equ [edi+32]            ;кол-во символов которые можно максимально ввести
  32. //ed_text         equ [edi+36]            ;указатель на буфер
  33. //ed_flags        equ [edi+40]            ;флаги
  34. //ed_size equ [edi+42]                    ;кол-во символов
  35. //ed_pos  equ [edi+46]                    ;позиция курсора
  36. //ed_offset       equ [edi+50]            ;смещение
  37. //cl_curs_x       equ [edi+54]            ;предыдущее координата курсора по х
  38. //cl_curs_y       equ [edi+58]            ;предыдущее координата курсора по у
  39. //ed_shift_pos    equ [edi+62]            ;положение курсора
  40. //ed_shift_pos_old equ [edi+66]           ;старое положение курсора
  41.  
  42.  
  43.  
  44. int fastcall load_editbox_lib(EAX)
  45. {
  46. //set mask
  47.         $mov    eax,40
  48.         $mov    ebx,0x27
  49.         $int    0x40
  50. // load DLL
  51.         $mov     eax, 68
  52.         $mov     ebx, 19
  53.         ECX="/sys/lib/box_lib.obj";
  54.         $int     0x40
  55.         $test    eax, eax
  56.         $jz      exit
  57.  
  58. // initialize import
  59.         $mov     edx,eax
  60.         ESI=#edit_box_draw;
  61. import_loop:
  62.         $lodsd
  63.         $test    eax,eax
  64.         $jz      import_done
  65.         $push    edx
  66. import_find:
  67.         $mov     ebx,DSDWORD[EDX]
  68.         $test    ebx, ebx
  69.         $jz      exit
  70.         $push    eax
  71. nex1:
  72.         $mov     cl,DSBYTE[EAX];
  73.         $cmp     cl,DSBYTE[EBX];
  74.         $jnz     import_find_next
  75.         $test    cl,cl
  76.         $jz      import_found
  77.         $inc     eax
  78.         $inc     ebx
  79.         $jmp     nex1
  80. import_find_next:
  81.         $pop     eax
  82.         $add     edx, 8
  83.         $jmp     import_find
  84. import_found:
  85.         $pop     eax
  86.         $mov     eax,DSDWORD[edx+4]
  87.         $mov     DSDWORD[esi-4],eax
  88.         $pop     edx
  89.         $jmp     import_loop
  90. import_done:
  91.         return 0;
  92. exit:
  93.         return -1;
  94. }
  95.