菜单项不能变灰??

哈尼嘟嘟 2011-03-07 09:43:33
为什么能是主菜单中的某一项可以变灰,但不能使主菜单下的子菜单变灰
CMenu* subMenu=m_pMainWnd->GetMenu();
subMenu->EnableMenuItem(0,MF_BYPOSITION|MF_DISABLED|MF_GRAYED);
这段代码可以使菜单项中的第一个菜单变灰
CMenu* subMenu=m_pMainWnd->GetMenu();
CMenu* subMenu1=subMenu->GetSubMenu(0);
subMenu1->EnableMenuItem(0,MF_BYPOSITION|MF_DISABLED|MF_GRAYED);
这段代码运行后就不能是第一个菜单项下的第一个弹出菜单变灰 (运行后没有变灰)
怎么回事啊!!!
...全文
209 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
csbobo888 2011-09-03
  • 打赏
  • 举报
回复
菜单是框架所管的事情,所以对菜单的操作应在框架的源文件中进行,步骤如下:
第一步:写框架的构造函数
CMainFrame::CMainFrame()
{
// TODO: add member initialization code here
m_bAutoMenuEnable=FALSE;//没有这一句,子菜单是不会变灰的
}
第二步:在OnCreate()中加入代码,OnCreate()是程序将窗体建好后做得第一件事,所以代码加在这里。
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
...
//加在return 0;上面就行;
CMenu *menu=GetMenu();//获得菜单
menu->EnableMenuItem(0,MF_GRAYED|MF_BYPOSITION | MF_DISABLED);//第0个主菜单变灰
menu->GetSubMenu(0)->EnableMenuItem(1,MF_GRAYED|MF_BYPOSITION);//第0个主菜单的第2项变灰
return 0;
}
以上两步就可以搞定,在VC6.0和VS2008上通过。其它方法见别人回答。

庭博网校专职从事计算机程序设计的培训,主要内容是C、C++、VC;PHP及相关课程,每人每年2500元。联系电话:134 7736 9154 QQ:14280784 18056259 。
庭博网校计算机程序设计教师多年从事程序设计教学工作,有深厚的理论功底,授课思路清晰,深入浅出,其讲述的程序设计课程小学生都听得懂。
哈尼嘟嘟 2011-03-09
  • 打赏
  • 举报
回复
我是在开始登陆时分权限登录 普通用户权限就少 管理员就多 怎么样初始化
ChrisLiu 2011-03-08
  • 打赏
  • 举报
回复
对,正如四楼所说的添加“UPDATE_COMMAND_UI”消息响应,
你需要那个菜单变化 就给那个添加
Eleven 2011-03-07
  • 打赏
  • 举报
回复
ON_UPDATE_COMMAND_UI()
无水先生 2011-03-07
  • 打赏
  • 举报
回复
是你程序初始没预设。
haogeai123 2011-03-07
  • 打赏
  • 举报
回复
若是实在不行,就用UI吧
奋斗吧 2011-03-07
  • 打赏
  • 举报
回复
顶四楼的
jixiang1983 2011-03-07
  • 打赏
  • 举报
回复
给菜单加"UPDATE_COMMAND_UI"消息响应函数:
BOOL m_Enable;//成员变量
void CMainFrame::OnUpdateFunName(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->Enable(m_Enable);
}
要使菜单不可用,设置 m_Enable = FLASE;反之 m_Enable = TRUE;

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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