鱼C论坛

 找回密码
 立即注册
查看: 2269|回复: 9

WIN32的一个问题

[复制链接]
发表于 2012-8-31 17:00:08 | 显示全部楼层 |阅读模式
5鱼币
在学资源这一章的时候在程序我我取得了系统的窗口句柄,并添加了两个菜单项,这两个 菜单项我把他们呢的性质定义为: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


小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-8-31 17:01:55 | 显示全部楼层
.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
                invoke  DefWindowProc,hWnd,uMsg,wParam,lParam
                ret
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-8-31 17:02:50 | 显示全部楼层
其中参数sysmenu就是取得的系统窗口句柄
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-9-1 21:04:21 | 显示全部楼层
!!!!怎么没人啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-9-3 10:52:48 | 显示全部楼层
还没学到,呵呵
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-9-3 17:28:20 | 显示全部楼层
把局部变量@hSysMenu换成全局变量hSysMenu试试看吧...如果你觉得其他没啥问题,这个可能就是唯一的问题了...
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-9-3 18:00:19 | 显示全部楼层

这有什么问题啊~?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-9-3 18:26:11 | 显示全部楼层
无星之夜 发表于 2012-9-3 18:00
这有什么问题啊~?

很简单,因为窗口过程的局部变量每时每刻都被初始化为随机值,每时每刻都在变化着,别试图通过一个窗口消息保存一个临时变量,然后用到另外一个窗口消息中...当然仅在一个窗口消息使用的话,建议用局部变量...
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-9-3 19:53:10 | 显示全部楼层
小王子之歌 发表于 2012-9-3 18:26
很简单,因为窗口过程的局部变量每时每刻都被初始化为随机值,每时每刻都在变化着,别试图通过一个窗口消息保 ...

可这玩意儿我只在窗口过程中调用过啊`~
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-9-5 09:21:33 | 显示全部楼层
!!!!!!!!!!!!!!!!!!!!!人呢??????????、
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-2 00:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表