Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. ;Hello world example
  2.  
  3. use32
  4.         db      'MENUET01'
  5.         dd      1
  6.         dd      start
  7.         dd      i_end
  8.         dd      0x1000
  9.         dd      0x1000
  10.         dd      0
  11.         dd      0
  12.  
  13. TRUE    =     1
  14. FALSE   =     0
  15.  
  16. include 'libGUI.inc'
  17.  
  18. start:
  19.         ;load libGUI labrari
  20.         push NULL  ;use default system path to library
  21.         call LoadLibGUI
  22.         ;create main window
  23.         CreateWindow
  24.         mov [window],eax
  25.         ;change size of main window
  26.         SetWindowSizeRequest [window],270,207
  27.         ;set callback function for button close window
  28.         SetCallbackFunction [window],DELETE_EVENT,callback_func_delete_window,NULL
  29.  
  30.         ;create control HorizontalScrollBar
  31.         mov [hsbdata.x],5
  32.         mov [hsbdata.y],5
  33.         mov [hsbdata.wight],250
  34.         mov [hsbdata.height],16
  35.         mov [hsbdata.ruller_size],dword 0.2 ;ruler size 0..1
  36.         mov [hsbdata.ruller_pos],dword 0.5  ;ruler position 0..1
  37.         mov [hsbdata.ruller_step],dword 0.1 ;ruler step 0..1
  38.         CreateHorizontalScrollBar hsbdata
  39.         mov [hscroll_bar],eax
  40.  
  41.         ;create control HorizontalScrollBar
  42.         mov [vsbdata.x],5
  43.         mov [vsbdata.y],26
  44.         mov [vsbdata.wight],16
  45.         mov [vsbdata.height],150
  46.         mov [vsbdata.ruller_size],dword 0.5 ;ruler size 0..1
  47.         mov [vsbdata.ruller_pos],dword 0.05 ;ruler position 0..1
  48.         mov [vsbdata.ruller_step],dword 0.1 ;ruler step 0..1
  49.         CreateVerticalScrollBar vsbdata
  50.         mov [vscroll_bar],eax
  51.  
  52.         ;set callback functions for scroll bars
  53.         SetCallbackFunction [hscroll_bar],SCROLLBAR_CHANGED_EVENT,hscroll_bar_callback,NULL
  54.         SetCallbackFunction [vscroll_bar],SCROLLBAR_CHANGED_EVENT,vscroll_bar_callback,NULL
  55.  
  56.         ;pack controls in window
  57.         PackControls [window],[hscroll_bar]
  58.         PackControls [window],[vscroll_bar]
  59.  
  60.         ;start libGUI main loop
  61.         LibGUImain [window]
  62.  
  63.  
  64. ;void hscroll_bar_callback(header_ *control,void *data)
  65. hscroll_bar_callback:
  66.  
  67.         mov eax,[esp+4];pointer to control scroll bar
  68.  
  69.         push ebx
  70.         mov ebx,[eax+HEADER_SIZE];size of ruler
  71.         mov ecx,[eax+HEADER_SIZE+4];position of ruler
  72.         mov edx,[eax+HEADER_SIZE+8];step change position of ruler by press
  73.                                    ;buttons of scroll bar
  74.         pop ebx
  75.  
  76.         ret
  77.  
  78. ;void hscroll_bar_callback(header_ *control,void *data)
  79. vscroll_bar_callback:
  80.  
  81.         mov eax,[esp+4];pointer to control scroll bar
  82.  
  83.         push ebx ;save befor use
  84.  
  85.         mov ebx,[eax+HEADER_SIZE];size of ruler
  86.         mov ecx,[eax+HEADER_SIZE+4];position of ruler
  87.         mov edx,[eax+HEADER_SIZE+8];step change position of ruler by press
  88.                                    ;buttons of scroll bar
  89.         pop ebx
  90.         ret
  91.  
  92. ;void callback_func_delete_window(header_t *control,void *data)
  93. callback_func_delete_window:
  94.  
  95.         mov eax,[esp+4] ;control
  96.  
  97.         QuitLibGUI eax
  98.  
  99.         ret
  100.  
  101. align 4
  102. ;----------------data-----------------
  103. hsbdata         gui_scroll_bar_data_t
  104. vsbdata         gui_scroll_bar_data_t
  105.  
  106. window          rd 1
  107. hscroll_bar     rd 1
  108. vscroll_bar     rd 1
  109.  
  110. i_end: