
format PE GUI 4.0
entry start
 
include 'WIN32A.inc'

IDD_MAIN	= 100
IDC_EDIT1	= 101
;====================================================================================================================================================
section '.code' code readable executable

;--------------------------------------------------------------------------------------------------------------------------------------
start:
	invoke GetModuleHandle,0



;--------------------------------------------------------------------------------------------------------------------------------------

	invoke	DialogBoxParam,eax,IDD_MAIN,HWND_DESKTOP,MainDlg,0
	invoke	ExitProcess,0
	or	eax,eax
	jz	exit
  exit:
	invoke	ExitProcess,0
;------------------------------------window procedure----------------------------------------------------------------------------------

proc MainDlg hwnddlg,msg,wparam,lparam

	push	ebx esi edi
	cmp	[msg],WM_COMMAND
	je	.wmcommand
	cmp	[msg],WM_CLOSE
	je	.wmclose
	xor	eax,eax
	jmp	.finish

  .wmcommand:
	cmp	[wparam], BN_CLICKED shl 16 + IDCANCEL
	je	.wmclose
	cmp	[wparam], BN_CLICKED shl 16 + IDOK
	jne	.process
	invoke	MessageBox,[hwnddlg],text1,caption,NULL+MB_OK
	 mov	 [flags],MB_OK
	call	SaveTextFileFromEdit


	ret


  .wmclose:
	invoke	EndDialog,[hwnddlg],0
  .process:
	mov	eax,1
  .finish:
	pop	edi esi ebx
	ret

;--------------------------------------------------------------------------------------------------------------------------------------


SaveTextFileFromEdit:
	invoke	CreateFile,FileName, FILE_APPEND_DATA,FILE_SHARE_READ,NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0
	mov	[hFile], eax
	cmp	[hFile],INVALID_HANDLE_VALUE
	je	.inValHandle
	invoke	GetDlgItemText,[hwnddlg],IDC_EDIT1,Buffer1,100h

	invoke	lstrlen,Buffer1



	invoke	WriteFile,[hFile], Buffer1, eax, dwWritten, 0

	invoke	CloseHandle,[hFile]

	retn
.inValHandle:
	invoke	MessageBox,[hwnddlg],text2,caption,NULL+MB_OK
	retn
.invalTxtLen:
	invoke	MessageBox,[hwnddlg],text5,caption,NULL+MB_OK
	retn
.fileNtAlloc:
	invoke	MessageBox,[hwnddlg],text4,caption,NULL+MB_OK
	retn



endp

;====================================================================================================================================================

 section '.data' data readable writeable
 dwBufferSize		dd ?
 dwWritten	dd ?
 pszText	dd ?
 dwTextLength	dd ?
 hEdit		dd ?
 dwRead 	dd ?
 FileText	dd ?
 hFile		dd ?
 FileName	db 'edx.txt',0
 flags		dd ?
 dwFileSize	dd ?
 Buffer1	rb 100h
 text1		db 'Now see the change',0
 text2		db 'Invalid handle to the file',0
 text3		db 'Invalid file size',0
 text4		db 'File not allocated',0
 text5		db 'invalid length',0
 caption	db ' ',0
 szFileName	db '',0
;================================imports=============================================================================================================

section '.idata' import data readable
library kernel32,'KERNEL32.DLL',\
	user32,'USER32.DLL',\
	shell32,'SHELL32.DLL'

include 'api/kernel32.inc'
include 'api/user32.inc'
include 'api/shell32.inc'

;====================================================================================================================================================
section '.rsrc' resource data readable
directory     RT_DIALOG, dialogs
resource      dialogs,\
		IDD_MAIN, LANG_ENGLISH + SUBLANG_DEFAULT, main_dialog
  dialog	main_dialog, 'my dialog', 0, 0, 200, 100, WS_CAPTION + WS_POPUP + WS_SYSMENU +DS_MODALFRAME + DS_CENTER



		dialogitem 'BUTTON','S&aveNow',IDOK,10,80,45,15,WS_VISIBLE+WS_TABSTOP+BS_DEFPUSHBUTTON
		dialogitem 'BUTTON','C&ancel',IDCANCEL,145,80,45,15,WS_VISIBLE+WS_TABSTOP+BS_PUSHBUTTON
		dialogitem 'EDIT','',IDC_EDIT1,20,2,160,20,WS_VISIBLE+WS_BORDER+WS_TABSTOP+ES_AUTOHSCROLL
  enddialog