读书人

SDK中怎么设置菜单标记,使用代码动态设

发布时间: 2012-01-20 18:53:53 作者: rapoo

SDK中如何设置菜单标记,使用代码动态设置.
大概知道是使用CheckMenuItem函数的, 跟MFC有点区别,会MFC,但是SDK中不会用,如:
hCtrlBlock = GetMenu(hWnd);
GetSubMenu(hCtrlBlock,1);
CheckMenuItem(hCtrlBlock,ID_32777,MF_BYCOMMAND || MF_CHECKED);

MFC里边是通过指向GetMenu->GetSubMenu->CheckMenuItem来完成的;
虽然能在菜单属性里边设置为真,但是只是显示有标记, 再次点击不会消失;
但是这不是我想要的, 我是想动态的控制整个标记.CheckMenuItem怎么用呢? 点击显示,再次点击消失,
我想应该是在ID_32777这个ID响应里边设置吧, 判断返回值,either MF_CHECKED or MF_UNCHECKED;





[解决办法]
hCtrlBlock = GetMenu(hWnd);
CheckMenuItem(hCtrlBlock,ID_32777, MF_CHECKED);
把MF_BYCOMMAND 去掉,编译运行,点击ID_32777就会加上个标记了.

[解决办法]
呵呵,是我舍近求远了。调GetMenuState就可以了。
[解决办法]
MENUITEMINFO mi;

memset(&mi,0,sizeof(MENUITEMINFO));
mi.cbSize = sizeof(MENUITEMINFO);
mi.fMask = MIIM_STATE;

if(GetMenuItemInfo(hMenu,idCmd,FALSE,&mi))
return (mi.fState & MF_CHECKED)?MF_CHECKED:MF_UNCHECKED;

读书人网 >VC/MFC

热点推荐