📄 lion-tut-c13.htm
字号:
<BR><B> mov ofn.lpstrFile,
OFFSET buffer</B> <BR><B> mov
ofn.nMaxFile,MAXSIZE</B> <BR><B> .ELSEIF uMsg==WM_DESTROY</B>
<BR><B> .if hMapFile!=0</B>
<BR><B> call
CloseMapFile</B> <BR><B> .endif</B>
<BR><B> invoke
PostQuitMessage,NULL</B> <BR><B> .ELSEIF uMsg==WM_COMMAND</B>
<BR><B> mov eax,wParam</B>
<BR><B> .if lParam==0</B>
<BR><B> .if
ax==IDM_OPEN</B>
<BR><B>
mov ofn.Flags, OFN_FILEMUSTEXIST or \</B>
<BR><B>
OFN_PATHMUSTEXIST or OFN_LONGNAMES or\</B>
<BR><B>
OFN_EXPLORER or OFN_HIDEREADONLY</B>
<BR><B>
invoke GetOpenFileName, ADDR ofn</B>
<BR><B>
.if eax==TRUE</B>
<BR><B>
invoke CreateFile,ADDR buffer,\</B>
<BR><B>
GENERIC_READ ,\</B>
<BR><B>
0,\</B>
<BR><B>
NULL,OPEN_EXISTING,FILE_ATTRIBUTE_ARCHIVE,\</B>
<BR><B>
NULL</B>
<BR><B>
mov hFileRead,eax</B>
<BR><B>
invoke CreateFileMapping,hFileRead,NULL,PAGE_READONLY,0,0,NULL</B>
<BR><B>
mov hMapFile,eax</B>
<BR><B>
mov eax,OFFSET buffer</B>
<BR><B>
movzx edx,ofn.nFileOffset</B>
<BR><B>
add eax,edx</B>
<BR><B>
invoke SetWindowText,hWnd,eax</B>
<BR><B>
invoke EnableMenuItem,hMenu,IDM_OPEN,MF_GRAYED</B>
<BR><B>
invoke EnableMenuItem,hMenu,IDM_SAVE,MF_ENABLED</B>
<BR><B>
.endif</B>
<BR><B>
.elseif ax==IDM_SAVE</B>
<BR><B>
mov ofn.Flags,OFN_LONGNAMES or\</B>
<BR><B>
OFN_EXPLORER or OFN_HIDEREADONLY</B>
<BR><B>
invoke GetSaveFileName, ADDR ofn</B>
<BR><B>
.if eax==TRUE</B>
<BR><B>
invoke CreateFile,ADDR buffer,\</B>
<BR><B>
GENERIC_READ or GENERIC_WRITE ,\</B>
<BR><B>
FILE_SHARE_READ or FILE_SHARE_WRITE,\</B>
<BR><B>
NULL,CREATE_NEW,FILE_ATTRIBUTE_ARCHIVE,\</B>
<BR><B>
NULL</B>
<BR><B>
mov hFileWrite,eax</B>
<BR><B>
invoke MapViewOfFile,hMapFile,FILE_MAP_READ,0,0,0</B>
<BR><B>
mov pMemory,eax</B>
<BR><B>
invoke GetFileSize,hFileRead,NULL</B>
<BR><B>
invoke WriteFile,hFileWrite,pMemory,eax,ADDR SizeWritten,NULL</B>
<BR><B>
invoke UnmapViewOfFile,pMemory</B>
<BR><B>
call CloseMapFile</B>
<BR><B>
invoke CloseHandle,hFileWrite</B>
<BR><B>
invoke SetWindowText,hWnd,ADDR AppName</B>
<BR><B>
invoke EnableMenuItem,hMenu,IDM_OPEN,MF_ENABLED</B>
<BR><B>
invoke EnableMenuItem,hMenu,IDM_SAVE,MF_GRAYED</B>
<BR><B>
.endif</B>
<BR><B>
.else</B>
<BR><B>
invoke DestroyWindow, hWnd</B>
<BR><B>
.endif</B> <BR><B> .endif</B>
<BR><B> .ELSE</B>
<BR><B> invoke
DefWindowProc,hWnd,uMsg,wParam,lParam</B>
<BR><B> ret</B>
<BR><B> .ENDIF</B> <BR><B>
xor eax,eax</B> <BR><B> ret</B>
<BR><B>WndProc endp</B>
<P><B>CloseMapFile PROC</B> <BR><B>
invoke CloseHandle,hMapFile</B>
<BR><B> mov
hMapFile,0</B> <BR><B> invoke
CloseHandle,hFileRead</B> <BR><B>
ret</B> <BR><B>CloseMapFile endp</B>
<P><B>end start</B> <BR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -