大概知道是使用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;

解决方案 »

  1.   

    用GetMenuItemInfo可以获取菜单项的选中状态,判断一下就可以了。
      

  2.   

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

  3.   

    具体说说参数4怎么设置?
     
    BOOL GetMenuItemInfo(         
        HMENU hMenu,
        UINT uItem,
        BOOL fByPosition,
        LPMENUITEMINFO lpmii
    );GetMenuItemInfo(hCtrlBlock,ID_32777,FALSE,   );
    第4个需要对结构MENUITEMINFO 怎么设置? 
    怎么才能返回到是是否有复选标记.
      

  4.   

    呵呵,是我舍近求远了。调GetMenuState就可以了。
      

  5.   

    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;