📄 lion-tut-c12.htm
字号:
<B>;==============================================</B> <BR>
<B>; Initialize the members of OPENFILENAME
structure</B> <BR>
<B>;==============================================</B> <BR>
<B> mov ofn.lStructSize,SIZEOF ofn</B>
<BR>
<B> push hWnd</B> <BR>
<B> pop ofn.hWndOwner</B> <BR>
<B> push hInstance</B> <BR>
<B> pop ofn.hInstance</B> <BR>
<B> mov ofn.lpstrFilter, OFFSET
FilterString</B> <BR>
<B> mov ofn.lpstrFile, OFFSET
buffer</B> <BR>
<B> mov ofn.nMaxFile,MAXSIZE</B>
<BR>
<B> .ELSEIF uMsg==WM_SIZE</B> <BR>
<B> mov eax,lParam</B> <BR>
<B> mov edx,eax</B> <BR>
<B> shr edx,16</B> <BR>
<B> and eax,0ffffh</B> <BR>
<B> invoke MoveWindow,hwndEdit,0,0,eax,edx,TRUE</B>
<BR>
<B> .ELSEIF uMsg==WM_DESTROY</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 or GENERIC_WRITE ,\</B> <BR>
<B>
FILE_SHARE_READ or FILE_SHARE_WRITE,\</B> <BR>
<B>
NULL,OPEN_EXISTING,FILE_ATTRIBUTE_ARCHIVE,\</B> <BR>
<B>
NULL</B> <BR>
<B>
mov hFile,eax</B> <BR>
<B>
invoke GlobalAlloc,GMEM_MOVEABLE or GMEM_ZEROINIT,MEMSIZE</B> <BR>
<B>
mov hMemory,eax</B> <BR>
<B>
invoke GlobalLock,hMemory</B> <BR>
<B>
mov pMemory,eax</B> <BR>
<B>
invoke ReadFile,hFile,pMemory,MEMSIZE-1,ADDR SizeReadWrite,NULL</B> <BR>
<B>
invoke SendMessage,hwndEdit,WM_SETTEXT,NULL,pMemory</B> <BR>
<B>
invoke CloseHandle,hFile</B> <BR>
<B>
invoke GlobalUnlock,pMemory</B> <BR>
<B>
invoke GlobalFree,hMemory</B> <BR>
<B>
.endif</B> <BR>
<B>
invoke SetFocus,hwndEdit</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 hFile,eax</B> <BR>
<B>
invoke GlobalAlloc,GMEM_MOVEABLE or GMEM_ZEROINIT,MEMSIZE</B> <BR>
<B>
mov hMemory,eax</B> <BR>
<B>
invoke GlobalLock,hMemory</B> <BR>
<B>
mov pMemory,eax</B> <BR>
<B>
invoke SendMessage,hwndEdit,WM_GETTEXT,MEMSIZE-1,pMemory</B> <BR>
<B>
invoke WriteFile,hFile,pMemory,eax,ADDR SizeReadWrite,NULL</B> <BR>
<B>
invoke CloseHandle,hFile</B> <BR>
<B>
invoke GlobalUnlock,pMemory</B> <BR>
<B>
invoke GlobalFree,hMemory</B> <BR>
<B>
.endif</B> <BR>
<B>
invoke SetFocus,hwndEdit</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> <BR>
<B>end start</B>
<P>
<HR width="100%">
<H4><FONT color=#ff0000>分析:</FONT></H4>
<B> invoke CreateWindowEx,NULL,ADDR
EditClass,NULL,\</B> <BR>
<B>
WS_VISIBLE or WS_CHILD or ES_LEFT or ES_MULTILINE or\</B> <BR>
<B>
ES_AUTOHSCROLL or ES_AUTOVSCROLL,0,\</B> <BR>
<B>
0,0,0,hWnd,EditID,\</B> <BR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -