file_share_read or file_share_write,\
null,create_new,file_attribute_archive,\
null
mov hfile,eax
invoke globalalloc,gmem_moveable or gmem_zeroinit,memsize
mov hmemory,eax
invoke globallock,hmemory
mov pmemory,eax
invoke sendmessage,hwndedit,wm_gettext,memsize-1,pmemory
invoke writefile,hfile,pmemory,eax,addr sizereadwrite,null
invoke closehandle,hfile
invoke globalunlock,pmemory
invoke globalfree,hmemory
.endif
invoke setfocus,hwndedit
.else
invoke destroywindow, hwnd
.endif
.endif
.else
invoke defwindowproc,hwnd,umsg,wparam,lparam
ret
.endif
xor eax,eax
ret
wndproc endp
end start
分析:
invoke createwindowex,null,addr editclass,null,\
ws_visible or ws_child or es_left or es_multiline or\
es_autohscroll or es_autovscroll,0,\
0,0,0,hwnd,editid,\
hinstance,null
mov hwndedit,eax
处理 wm_create消息时,我们创建一个编辑控件。请注意,我们把该控件大小的有关参数都设成0,因为我们稍后将重新设置该编辑控件的大小,使得其覆盖父窗口的整个客户区。