WIN32的一个问题
在学资源这一章的时候在程序我我取得了系统的窗口句柄,并添加了两个菜单项,这两个 菜单项我把他们呢的性质定义为:MF_CHECKED,出现了小钩,我想通过窗口过程对这两个菜单项进行操作(就是打钩和取消打钩),但是始终不能成功啊~1L是添加窗口项的代码,2L是实现操作的代码:
.if eax == WM_CREATE
invoke GetSubMenu,hMenu,1
mov hSubMenu,eax
invoke GetSystemMenu,hWnd,FALSE
mov @hSysMenu,eax
invoke AppendMenu,@hSysMenu,MF_SEPARATOR,0,NULL ;函数功能是添加一个系统菜单定义
invoke AppendMenu,@hSysMenu,MF_CHECKED,IDM_HELP,offset szMenuHelp
invoke AppendMenu,@hSysMenu,MF_CHECKED,IDM_ABOUT,offset szMenuAbout
.elseif eax == WM_SYSCOMMAND
mov eax,wParam
movzx eax,ax
.if eax == IDM_HELP || eax == IDM_ABOUT
mov ebx,eax
invoke GetMenuState,@hSysMenu,ebx,MF_BYCOMMAND
.if eax ==MF_CHECKED
mov eax,MF_UNCHECKED
.else
mov eax,MF_CHECKED
.endif
invoke CheckMenuItem,@hSysMenu,ebx,eax
; invoke _DisplayMenuItem,wParam
.else
invokeDefWindowProc,hWnd,uMsg,wParam,lParam
ret 其中参数sysmenu就是取得的系统窗口句柄 !!!!怎么没人啊 还没学到,呵呵 把局部变量@hSysMenu换成全局变量hSysMenu试试看吧...如果你觉得其他没啥问题,这个可能就是唯一的问题了... 小王子之歌 发表于 2012-9-3 17:28 static/image/common/back.gif
把局部变量@hSysMenu换成全局变量hSysMenu试试看吧...如果你觉得其他没啥问题,这个可能就是唯一的问题了...
这有什么问题啊~? 无星之夜 发表于 2012-9-3 18:00 static/image/common/back.gif
这有什么问题啊~?
很简单,因为窗口过程的局部变量每时每刻都被初始化为随机值,每时每刻都在变化着,别试图通过一个窗口消息保存一个临时变量,然后用到另外一个窗口消息中...当然仅在一个窗口消息使用的话,建议用局部变量... 小王子之歌 发表于 2012-9-3 18:26 static/image/common/back.gif
很简单,因为窗口过程的局部变量每时每刻都被初始化为随机值,每时每刻都在变化着,别试图通过一个窗口消息保 ...
可这玩意儿我只在窗口过程中调用过啊`~ !!!!!!!!!!!!!!!!!!!!!人呢??????????、
页:
[1]