.386 
.model flat,stdcall 
option casemap:none 

include		windows.inc 
include		user32.inc 
include		kernel32.inc 
includelib	user32.lib 
includelib	kernel32.lib 

DlgProc		proto		:DWORD,:DWORD,:DWORD,:DWORD 

.data 
Message		db		"Hello World!",0 
Caption		db		"This is the text from the editbox",0

.data? 
hInstance	HINSTANCE	?  
buffer		db		512 dup(?) 

.const
IDD_DLGBOX	equ		1001
IDC_EDITBOX	equ		1002
IDC_MESSAGE	equ		1003
IDC_EXIT	equ		1004
IDM_GETTEXT	equ		1005
IDM_CLEARTEXT	equ		1006
IDM_EXIT	equ		1007
ARIcon		equ		2000

.code 
start: 
    invoke GetModuleHandle, NULL 
    mov    hInstance,eax 
    invoke DialogBoxParam, hInstance, IDD_DLGBOX, NULL, addr DlgProc, NULL 
    invoke ExitProcess,eax 
    
DlgProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM 
.if uMsg == WM_INITDIALOG
	invoke	LoadIcon,hInstance,ARIcon
	invoke	SendMessage, hWnd, WM_SETICON, 1, eax
	invoke GetDlgItem, hWnd,IDC_EDITBOX 
	invoke SetFocus,eax 
.elseif uMsg == WM_COMMAND
	mov	eax,wParam
	.if eax==IDC_MESSAGE 
		invoke SetDlgItemText,hWnd,IDC_EDITBOX,ADDR Message 
	.elseif eax==IDC_EXIT 
		invoke	SendMessage, hWnd, WM_CLOSE, 0, 0
	.elseif eax==IDM_GETTEXT
		invoke GetDlgItemText,hWnd,IDC_EDITBOX,ADDR buffer,512 
		invoke MessageBox,NULL,ADDR buffer,ADDR Caption,MB_OK 
	.elseif eax==IDM_CLEARTEXT
		invoke SetDlgItemText,hWnd,IDC_EDITBOX,NULL 
	.elseif eax==IDM_EXIT 
		invoke	SendMessage, hWnd, WM_CLOSE, 0, 0
	.endif
.elseif	uMsg == WM_CLOSE
	invoke	EndDialog, hWnd, 0
.endif        
    xor	eax,eax
    ret 
DlgProc endp 

end start