1;=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* 2;very simple jwasm gtk example (written by jcfuller) 3; create a Linux binary 4; 1. assemble: jwasm -elf -zcw -Fo=gtk01.o gtk01.asm 5; 2. link with LD: ld -s -o gtk01 gtk01.o -I/lib/ld-linux.so.2 `pkg-config --libs gtk+-2.0` 6; 7; create a Win32 binary with MinGW 8; ( MinGW installed at C:\MinGW, GTK+ installed at C:\GTK ) 9; 1. assemble: jwasm -elf gtk01.asm 10; 2. link with LD: ld -s -o gtk01.exe gtk01.obj -Lc:/gtk/lib 11; -lgtk-win32-2.0.dll -lgobject-2.0.dll -Lc:/mingw/lib -lmsvcrt 12;=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* 13 .386 14 .model flat 15 16 public _start 17 18gtk_init proto c :DWORD, :DWORD 19gtk_init_check proto c :DWORD, :DWORD 20gtk_window_new proto c :DWORD 21gtk_window_set_title proto c :DWORD, :DWORD 22gtk_table_new proto c :DWORD, :DWORD, :DWORD 23gtk_table_attach_defaults proto c :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD 24gtk_container_add proto c :DWORD, :DWORD 25gtk_button_new_from_stock proto c :DWORD 26gtk_label_new proto c :DWORD 27gtk_widget_show_all proto c :DWORD 28gtk_main proto c 29gtk_main_quit proto c 30g_signal_connect_data proto c :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD 31 32puts proto c :DWORD 33exit proto c :DWORD 34 35.data 36no_int db 'No gtk_init',0 37wincap db 'Hello World', 0 38labelcap db 'jwasm gtk example', 0 39quitbut db 'gtk-quit',0 40no_win_err db 'No Window',0 41sdel_event db 'delete-event',0 42sclicked db 'clicked',0 43 44 .data? 45window dd ? 46table dd ? 47gtklabel dd ? 48button dd ? 49 50 .code 51 52_start: ; let the ritual begin. 53 54;make sure we have gtk 55invoke gtk_init_check,0,0 56.if (eax == 0) 57 invoke puts, offset no_int 58 jmp Terminate 59.endif 60;create window 61invoke gtk_window_new, 0 62.if (eax == 0) 63 invoke puts, offset no_win_err 64 jmp Terminate 65.endif 66mov [window], eax 67 68invoke gtk_window_set_title,[window], offset wincap 69invoke gtk_table_new,15, 15, 1 70mov [table],eax 71invoke gtk_container_add,[window],[table] 72invoke gtk_label_new,offset labelcap 73mov [gtklabel],eax 74invoke gtk_table_attach_defaults,[table],[gtklabel],1, 8, 3, 7 75invoke gtk_button_new_from_stock,offset quitbut 76mov [button],eax 77invoke gtk_table_attach_defaults,[table],[button], 10, 14, 12, 14 78;Show whole GUI 79invoke gtk_widget_show_all,[window] 80;attache signals 81invoke g_signal_connect_data,[window],offset sdel_event,offset exit_prog,0, 0, 0 82invoke g_signal_connect_data,[button],offset sclicked,offset exit_prog,0, 0, 0 83;Do it 84invoke gtk_main 85;------------------------------------------------------------------------------ 86;Callback for closing window 87exit_prog proc 88 invoke gtk_main_quit 89exit_prog endp 90;------------------------------------------------------------------------------ 91Terminate: 92 invoke exit, 0 93 94 end _start 95