请教大家关于罗云彬win32第一个窗口程序中的问题
看完书后,自己尝试写了一个出现一个问题,
1、就是程序运行了但看不到界面,在任务管理器又可以看到进程,
2、还有就是代码中:hInstance和hwinmain有什么区别啊,
3、在注册窗口类时:
push hInstance
POP @stWndClass.hInstance
这二句为什么不能换成mov @stWndClass.hInstance,hInstance
4、在定义数据时
hwinmain dd ?
hInstance dd (?)
加括号和不加括号都可以,他们是一样的么?
下面是代码
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
.386
.model flat,stdcall
option casemap:none
;include定义
include windows.inc
include user32.inc
includelib user32.lib
include gdi32.inc
includelib gdi32.lib
include kernel32.inc
includelib kernel32.lib
;数据段
.data?
hwinmain dd ?
hInstance dd (?)
.const
szCaption db '第一个自己写的win32窗口程序',0
szText db '我是第一个win32程序',0
;代码段
.code
;窗口过程
_prowinmain proc uses ebx edi esi,hWnd,umsg,wparam,lparam
mov eax,umsg
.if eax==WM_CLOSE
invoke DestroyWindow,hwinmain
invoke PostQuitMessage,NULL
.else
invoke DefWindowProc,hWnd,umsg,wparam,lparam
ret
.endif
xor eax,eax
ret
_prowinmain endp
;窗口建立
_winmain proc
local @stWndClass:WNDCLASSEX
local @stMSG:MSG
invoke GetModuleHandle,NULL
mov
hInstance,eax
invoke RtlZeroMemory,addr @stWndClass,sizeof @stWndClass
invoke LoadCursor,0,IDC_ARROW
mov @stWndClass.hCursor,eax
mov @stWndClass.cbSize,sizeof WNDCLASSEX
push hInstance
POP @stWndClass.hInstance mov @stWndClass.lpfnWndProc,offset _prowinmain
mov @stWndClass.lpszClassName,offset szCaption
mov @stWndClass.style,CS_HREDRAW or CS_VREDRAW
mov @stWndClass.hbrBackground,COLOR_WINDOW+1
invoke RegisterClassEx,addr @stWndClass
invoke CreateWindowEx,WS_EX_CLIENTEDGE,\
offset szText,offset szCaption,\
WS_OVERLAPPEDWINDOW,\
100,100,600,400,\
NULL,NULL,hInstance,NULL
mov
hwinmain,eax
invoke ShowWindow,hwinmain,SW_SHOWNORMAL
invoke UpdateWindow,hwinmain
;消息循环
.while TRUE
invoke GetMessage,addr @stMSG,NULL,0,0
.BREAK .if eax==0
invoke TranslateMessage,addr @stMSG
invoke DispatchMessage,addr @stMSG
.endw
_winmain endp
;程序入口
start:
call _winmain
invoke ExitProcess,NULL
end start
麻烦大家帮下忙,谢谢
[课程]Android-CTF解题方法汇总!