写了一个关于CheckMenuItem的函数,但是解决不了复选项前面打钩与不打勾的问题。代码如下 int ret;
HWND han;
HMENU menu, menu1; han = GetForegroundWindow();  
menu = GetMenu(han);
menu1= GetSubMenu(menu, 2);   
  
ret = CheckMenuItem(menu1, 0, MF_BYPOSITION|MF_UNCHECKED);         我操作的窗口是一个记事本窗口,返回值都没有问题,但就是不能达到效果。就是通过返回值已经发现是UNCHECKED状态,但是菜单上还是有勾。我只想知道用我的这种C语言方式要如何实现效果。谢谢

解决方案 »

  1.   

    应用位置索引号而不是菜单项的命令ID试试。
    即把ret = CheckMenuItem(menu1, 0, MF_BYPOSITION|MF_UNCHECKED);中的menu1换成相对应的位置索引号,同时去掉它后面的 “,0”。
    ret = CheckMenuItem(menu1, 0, MF_BYPOSITION|MF_UNCHECKED);
    假设你的menu1的位置索引号是0,则
    完整语句 ret=CheckMenuItem(0,MF_BYPOSITION|MF_UNCHECKED);
    我也是初学者,只是建议。如果不行,请见谅。
    祝你好运。