format pe gui 4.0
entry start

include '%fasminc%\win32a.inc'

ID_DLGMAIN			= 10

MAX_PATH			= 260
ERROR_ALREADY_EXISTS		= 183

section '.idata' data readable writeable

  szMutex	db "template",0

section '.udata' readable writeable

  hInstance	dd ?
  hMutex	dd ?

section '.code' code readable executable

  start:
	invoke	CreateMutex,NULL,TRUE,szMutex
	mov	[hMutex],eax
	invoke	GetLastError
	cmp	al,ERROR_ALREADY_EXISTS
	jz	exit_prog

	invoke	GetModuleHandle,NULL
	or	eax,eax
	jz	exit_prog

	mov	[hInstance],eax
	invoke	DialogBoxParam,eax,ID_DLGMAIN,NULL,_dialogproc,NULL

  exit_prog:
	invoke	ReleaseMutex,[hMutex]
	invoke	ExitProcess,NULL

  proc	_dialogproc uses ebx esi edi, hWnd,wMsg,wParam,lParam
	movzx	eax,word [wMsg]
	cmp	ax,WM_COMMAND
	jz	.wmcommand
	cmp	ax,WM_CLOSE
	jz	.wmclose
	cmp	ax,WM_INITDIALOG
	jnz	.not_processed

  .wminit:
	jmp	.processed

  .wmcommand:
	cmp	[wParam],BN_CLICKED shl 16 + 100
	;jnz     .processed

	jmp	.processed

  .wmclose:
	invoke	EndDialog,[hWnd],NULL

  .processed:
	xor	eax,eax
	inc	eax
	jmp	.finish

  .not_processed:
	xor	eax,eax

  .finish:
	ret
  endp

section '.idata' import data readable writeable

  library	kernel32,'kernel32.dll',\
		user32,'user32.dll',\
		gdi32,'gdi32.dll',\
		advapi32,'advapi32.dll'

  include	'%fasminc%\api\kernel32.inc'
  include	'%fasminc%\api\user32.inc'
  include	'%fasminc%\api\gdi32.inc'
  include	'%fasminc%\api\advapi32.inc'

section '.rsrc' resource data readable

  directory RT_DIALOG,dialogs

  resource dialogs,\
	   ID_DLGMAIN,LANG_ENGLISH+SUBLANG_DEFAULT,dlg

  dialog dlg,0,70,70,332,176,DS_CENTER+WS_POPUP+WS_VISIBLE,,,'Tahoma',8
    dialogitem 'BUTTON','at',100,274,3,11,10,BS_OWNERDRAW+BS_CENTER+BS_FLAT+WS_TABSTOP
    dialogitem 'BUTTON','bt',200,288,3,11,10,BS_OWNERDRAW+BS_CENTER+BS_FLAT+WS_TABSTOP
  enddialog

; eof