57 lines
1.3 KiB
Text
57 lines
1.3 KiB
Text
option casemap:none
|
|
|
|
gtk_main proto
|
|
gtk_main_quit proto
|
|
gtk_window_get_type proto
|
|
gtk_widget_show_all proto :qword
|
|
exit proto :dword
|
|
gtk_window_new proto :dword
|
|
printf proto :dword, :vararg
|
|
g_type_check_instance_cast proto :qword, :qword
|
|
gtk_init proto :qword, :qword
|
|
gtk_window_set_title proto :qword, :qword
|
|
g_signal_connect_data proto :qword, :qword, :qword, :dword, :dword, :dword
|
|
|
|
del_event proto
|
|
|
|
.data
|
|
tlt db "hello_gtk",0
|
|
agc dq 1
|
|
agv dq ags
|
|
ags dq tlt
|
|
dq 0
|
|
|
|
.code
|
|
main proc
|
|
local hwnd:qword
|
|
local tmp:qword
|
|
|
|
invoke printf, CSTR("-> Starting GTK with argc:%i - argv ptr: 0x%x",10), agc, agv
|
|
lea rax, agc
|
|
lea rbx, agv
|
|
invoke gtk_init, rax, rbx
|
|
invoke gtk_window_new, 0
|
|
mov hwnd, rax
|
|
invoke printf, CSTR("-> Main window handle: %d",10), hwnd
|
|
call gtk_window_get_type
|
|
mov tmp, rax
|
|
invoke printf, CSTR("-> Window type: %d",10), tmp
|
|
invoke g_type_check_instance_cast, hwnd, tmp
|
|
mov tmp, rax
|
|
invoke gtk_window_set_title, tmp, CSTR("Goodbye, World.")
|
|
invoke g_type_check_instance_cast, hwnd, 0x50
|
|
mov tmp, rax
|
|
lea rax, del_event
|
|
invoke g_signal_connect_data, tmp, CSTR("delete-event"), rax, 0, 0, 0
|
|
invoke gtk_widget_show_all, hwnd
|
|
call gtk_main
|
|
;invoke exit, 0
|
|
ret
|
|
main endp
|
|
|
|
del_event proc
|
|
invoke printf, CSTR("-> Exit event called..",10)
|
|
call gtk_main_quit
|
|
ret
|
|
del_event endp
|
|
end
|