菜单项中的选中状态为什么改变不了啊??等待...

hrbniu 2006-03-23 01:07:27

在以下语句中,为什么没有改变啊,逻辑变量也确实得到了啊??
pCmdUI->SetCheck(bChecked);
...全文
199 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
Snow_Ice11111 2006-03-29
  • 打赏
  • 举报
回复
还没解决么?下面是我记录的一点心得,已全部测试通过:

SDI或MDI工程中,在菜单项前打上或取消复选框标志。先给CMainFrame类添加一个BOOL类的成员变量m_stat,然后在菜单项的响应函数体中加入:
m_stat=!m_stat;
并在菜单项的UPDATE_COMMAND_UI响应函数中加入:
pCmdUI->SetCheck(m_stat);
注:如果是自绘风格(MF_OWNERDRAW)的菜单,就不会在菜单前显示小钩的。
-----------------------------------------------------------
对话框工程的话,先同样在对话框类中添加一个BOOL类的成员变量m_stat,然后用下面代码实现:
HMENU hMenu=::LoadMenu(NULL,MAKEINTRESOURCE(IDR_MENU1)); //IDR_MENU1为资源中菜单的ID
::SetMenu(m_hWnd,hMenu);
if(m_stat)
CheckMenuItem(hMenu,IDC_ENABLE,MF_UNCHECKED); //IDC_ENABLE为菜单前要打钩的子项
else
CheckMenuItem(hMenu,IDC_ENABLE,MF_CHECKED);
m_stat=!m_stat;
---------------------------------------------
也反复试过了,对话框工程中用pCmdUI->SetCheck(m_stat);的方法无效。
Snow_Ice11111 2006-03-27
  • 打赏
  • 举报
回复
你的菜单是否是自绘风格(MF_OWNERDRAW)的,如果是的话就不会在菜单前显示小钩的。
hrbniu 2006-03-27
  • 打赏
  • 举报
回复
谢谢楼上的支持,呵呵
XXKKFF 2006-03-26
  • 打赏
  • 举报
回复
继续顶
hrbniu 2006-03-26
  • 打赏
  • 举报
回复
因为我的应用程序是基于对话框的,所以,其中的工具栏,状态栏,菜单栏都是自己创建的,所以像上面的问题一样,仅仅在写那几行代码好像没有用,不知是否还需要调要什么底层函数什么的~!
不知,各位有何高见
XXKKFF 2006-03-26
  • 打赏
  • 举报
回复
继续顶
XXKKFF 2006-03-25
  • 打赏
  • 举报
回复
提前帖子
XXKKFF 2006-03-25
  • 打赏
  • 举报
回复
没有人知道
hrbniu 2006-03-25
  • 打赏
  • 举报
回复
在按钮单击和更新下都添加上了,但还是那样,没有变化
Snow_Ice11111 2006-03-25
  • 打赏
  • 举报
回复
试试贴中未名朋友的:DrawMenuBar();
hrbniu 2006-03-25
  • 打赏
  • 举报
回复
????
XXKKFF 2006-03-25
  • 打赏
  • 举报
回复
Snow_Ice11111(雪上加冰)
想用这个方法啊pCmdUI->SetCheck(bChecked);
不用CMenu的方法
Snow_Ice11111 2006-03-25
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/4516/4516068.xml?temp=.6119806
chuanke 2006-03-24
  • 打赏
  • 举报
回复
3检查ON_UPDATE_COMMAND_UI这个是否映射对
hrbniu 2006-03-24
  • 打赏
  • 举报
回复
大家看看,这是什么原因,上面的代码有问题吗??
目的就是改变菜单栏中选中的状态.....
XXKKFF 2006-03-24
  • 打赏
  • 举报
回复
我也有同样的问题
hrbniu 2006-03-23
  • 打赏
  • 举报
回复
下面的代码有错误吗,如果没有,还需要设置其它地方吗???
void CVideoCapDlg::OnPreview()
{
bChecked=!bChecked;
}

void CVideoCapDlg::OnUpdatePreview(CCmdUI* pCmdUI)
{
pCmdUI->SetCheck(bChecked);
}
chuanke 2006-03-23
  • 打赏
  • 举报
回复
1首先bChecked赋初值;
2搜索其他用到bChecked的地方,看值是否都处理了
3检查ON_UPDATE_COMMAND_UI这个是否映射对
4处理函数是否添加
5pCmdUI->SetCheck(!bChecked);
hrbniu 2006-03-23
  • 打赏
  • 举报
回复
一个按钮的单击时间和更新时间啊
anothervip 2006-03-23
  • 打赏
  • 举报
回复
你在什么函数中调用的?
加载更多回复(1)

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧