- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
format pe gui 5.0
include 'win32ax.inc'
_title db '1Kbyte window',0
_class db '#32770',0
old_wndproc dd 0
entry $
xor edi,edi
mov ecx,$80000000
mov esi,$400000
mov eax,WS_VISIBLE+WS_OVERLAPPEDWINDOW
invoke CreateWindowEx,edi,_class,edi,eax,ecx,ecx,ecx,ecx,edi,edi,edi,edi
mov ebx,eax
invoke SetWindowLong,ebx,GWL_WNDPROC,wnd_proc
mov [old_wndproc],eax
invoke SendMessage,ebx,WM_INITDIALOG,edi,edi
sub esp,32
mov ebx,esp
msg_loop:
invoke GetMessage,ebx,edi,edi,edi
cmp eax,1
jb app_exit
jne msg_loop
invoke DispatchMessage,ebx
jmp msg_loop
wnd_proc:
mov eax,[esp+8]
cmp eax,WM_INITDIALOG
je app_init
cmp eax,WM_CLOSE
je app_exit
pop eax
push [old_wndproc]
push eax
jmp [CallWindowProc]
app_init:
mov eax,[esp+4]
invoke SendMessage,eax,WM_SETTEXT,0,_title
xor eax,eax
ret
app_exit:
invoke ExitProcess,edi
data import
library\
kernel32,'kernel32.dll',\
user32,'user32.dll'
include 'api\kernel32.inc'
include 'api\user32.inc'
end data