Pravio sam ga u MASM32-u, namjerno nisam koristio windows.inc, user32.inc i invoke-like pozive:
.386
.model flat, stdcall
option casemap:none
includelib ..\lib\kernel32.lib
includelib ..\lib\user32.lib
MessageBoxA PROTO :DWORD,:DWORD,:DWORD,:DWORD
ExitProcess PROTO uExitCode:DWORD
WinMain PROTO :DWORD,:DWORD,:DWORD,:DWORD
GetModuleHandleA PROTO :DWORD
LoadIconA PROTO :DWORD,:DWORD
LoadCursorA PROTO :DWORD,:DWORD
RegisterClassA PROTO :DWORD
CreateWindowExA PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD
ShowWindow PROTO :DWORD,:DWORD
UpdateWindow PROTO :DWORD
GetMessageA PROTO :DWORD,:DWORD,:DWORD,:DWORD
TranslateMessage PROTO :DWORD
DispatchMessageA PROTO :DWORD
DefWindowProcA PROTO :DWORD,:DWORD,:DWORD,:DWORD
PostQuitMessage PROTO :DWORD
;tipovi varijabli
;novo ime---------vec postojece
HINSTANCE typedef DWORD
LPSTR typedef DWORD
HWND typedef DWORD
LPARAM typedef DWORD
WPARAM typedef DWORD
UINT typedef DWORD
;konstante
SW_SHOWNORMAL equ 1
IDI_APPLICATION equ 32512
IDC_ARROW equ 32512
CS_HREDRAW equ 2h
CS_VREDRAW equ 1h
COLOR_WINDOW equ 5
WS_OVERLAPPEDWINDOW equ 0CF0000h
TRUE equ 1
FALSE equ 0
NULL equ 0
WM_DESTROY equ 2h
;strukture
WNDCLASSEX STRUCT
cbSize DWORD ?
style DWORD ?
lpfnWndProc DWORD ?
cbClsExtra DWORD ?
cbWndExtra DWORD ?
hInstance DWORD ?
hIcon DWORD ?
hCursor DWORD ?
hbrBackground DWORD ?
lpszMenuName DWORD ?
lpszClassName DWORD ?
hIconSm DWORD ?
WNDCLASSEX ENDS
POINT STRUCT
x DWORD ?
y DWORD ?
POINT ENDS
MSG STRUCT
hwnd DWORD ?
message DWORD ?
wParam DWORD ?
lParam DWORD ?
time DWORD ?
pt POINT <>
MSG ENDS
.data
Naslov db "File listing",0
Text db "This program is made by Passwd!",0
;ime nase klase
ClassName db "ClassName",0
AppName db "FileListing",0
.data?
hInstance HINSTANCE ?
wc WNDCLASSEX <>
hwnd HWND ?
msg MSG <>
.code
start:
push 0
push offset Naslov
push offset Text
push 0
call MessageBoxA
push 0
call GetModuleHandleA
mov hInstance, eax
push SW_SHOWNORMAL
push 0
push 0
push hInstance
call WinMain
push 0
call ExitProcess
WinMain proc hInst:HINSTANCE, hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD
;LOCAL wc:WNDCLASSEX
;LOCAL hwnd:HWND
;LOCAL msg:MSG
mov wc.cbSize,SIZEOF WNDCLASSEX
mov wc.style, CS_HREDRAW or CS_VREDRAW
mov wc.lpfnWndProc, OFFSET WndProc
mov wc.cbClsExtra,0
mov wc.cbWndExtra,0
push hInstance
pop wc.hInstance
mov wc.hbrBackground,COLOR_WINDOW+1
mov wc.lpszMenuName,0
mov wc.lpszClassName,OFFSET ClassName
push IDI_APPLICATION
push 0
call LoadIconA
mov wc.hIcon,eax
mov wc.hIconSm,eax
push IDC_ARROW
push 0
call LoadCursorA
mov wc.hCursor,eax
push offset wc
call RegisterClassA
push 0
push hInst
push 0
push 0
push 300 ;sirina
push 300 ;visina
push 300 ;y-kor
push 300 ;x kor
push WS_OVERLAPPEDWINDOW
push offset AppName
push offset ClassName
call CreateWindowExA
push CmdShow
push hwnd
call ShowWindow
push hwnd
call UpdateWindow
.WHILE TRUE
push 0
push 0
push 0
push offset msg
call GetMessageA
.BREAK .IF (!eax)
push offset msg
call TranslateMessage
push offset msg
call DispatchMessageA
.ENDW
mov eax, msg.wParam
ret
WinMain endp
WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
.IF uMsg==WM_DESTROY
push 0
call PostQuitMessage
.ELSE
push lParam
push wParam
push uMsg
push hWnd
call DefWindowProcA
ret
.ENDIF
xor eax,eax
ret
WndProc endp
end start