new.asm

来自「一个十六进制编辑器源代码,cool!」· 汇编 代码 · 共 62 行

ASM
62
字号
_NewProc	proto:DWORD ,:DWORD ,:DWORD ,:DWORD
_NewFile proto:DWORD ,:DWORD 

.code
_NewProc proc @hDlg,uMsg,wParam,lParam
local @szBuf[255]:BYTE 
	mov eax,uMsg
	.if eax==WM_INITDIALOG 
		;初始化对话框
		invoke SetDlgItemInt,@hDlg,IDC_EDIT_LEN,100,FALSE ;长度
		invoke SetDlgItemInt,@hDlg,IDC_EDIT_INIT,0,FALSE ;初始值
	.elseif eax==WM_COMMAND
		mov eax,wParam
		.if ax==IDOK
			invoke _GetInt ,@hDlg,IDC_EDIT_LEN	;新建文件的长度
			.if eax
					push eax
					invoke _GetInt ,@hDlg,IDC_EDIT_INIT;取得初始值
					push eax
					call _NewFile
					invoke SendMessage,@hDlg,WM_CLOSE ,NULL ,NULL 
			.endif
		.endif
	.elseif eax==WM_CLOSE 
		invoke EndDialog,@hDlg,0
	.else
		xor eax,eax
		ret
	.endif
	mov eax,TRUE 
	ret
_NewProc endp
;-------------------------------------
_NewFile proc uses edi ecx nValue,nSize
local wParam,@szBuf[255]:BYTE
		mov eax,nSize
		add eax,EXTRASIZE
		__alloc eax
		.if eax
			push eax
			mov edi,eax
			mov ecx,nSize
			mov eax,nValue
			rep stosb
		.else
			call _ShowError
			ret
		.endif
		call _Release
		m2m dwFileSize,nSize
		pop lpMemFile
		mov dwFileType,FILE_NORMAL
		invoke EnableMenuItem,hMenu,1003,MF_ENABLED 
		invoke EnableMenuItem,hMenu,1004,MF_ENABLED 
		invoke lstrcpy,addr szFileName,addr szNewFile
		invoke _SetWindowTitle,0,eax
		invoke _InitData ,dwFileSize
		call _ReDraw
		ret
_NewFile endp

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?