回 帖 发 新 帖 刷新版面

主题:关于对话框使用CheckMenuItem

mov ebx,eax
   invoke GetMenuState,hMenu,eax,MF_BYCOMMAND
   .if eax == MF_CHECKED
    mov eax,MF_UNCHECKED
   .else
    mov eax,MF_CHECKED
   .endif
   invoke CheckMenuItem,hMenu,ebx,eax

为什么在对话框里使用 CheckMenuItem 死活都打不上钩呀?

我在网上找了一下~~~~~得知: 对话框得响应WM_KICKIDLE消息来更新显示.即UpdateCmdUI

但俺找不到呀~~~请高指点指点~~~谢谢了!

回复列表 (共4个回复)

沙发

GetMenuState返回的是菜单项的状态,它可以是以下的一个或几个参数:
MF_CHECKED MF_DISABLED MF_GRAYED MF_HILITE MF_MENUBARBREAK MF_MENUBREAK MF_SEPARATOR
所以你应该用位运算:.if eax & MF_CHECKED

板凳

钩是打上了~~~~只菜单栏是的菜单没有更新过来~~~

用TrackPopupMenu 后右键单击弹出就可以看见打钩了~

就是菜单栏上的菜单死活都看不到!!!!在对话框中是这样的~~~

不知道有没有什么办法能让菜单更新的!!?

3 楼

invoke SetMenu,hwnd, 0
invoke SetMenu,hwnd, hMenu

4 楼

问题搞定了~~~~非常感谢!! :)

我来回复

您尚未登录,请登录后再回复。点此登录或注册