继续菜单不能变灰!!

zufei 2009-12-21 10:56:30
该弹出菜单的代码:
CMenu xpMenu;
POINT point;
GetCursorPos(&point);
VERIFY(xpMenu.LoadMenu(IDR_MENU_DOC)); //这里是在菜单资源做的
CMenu *menu=(CMenu*)xpMenu.GetSubMenu(0);
UINT nEnable;
nEnable = MF_BYCOMMAND | MF_GRAYED;
menu->EnableMenuItem(ID_MENU_OPEN, nEnable);
menu->EnableMenuItem(ID_MENU_ADD, nEnable);
menu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y,this, NULL);
xpMenu.DestroyMenu();

我刚才再试过!
例子1:
同上面一样在CMainFrame::的消息处理函数里运行该段代码,菜单是不会变灰!

例子2:
在CMainFrame::的消息处理函数里放置一个模态对话框,在该对话框的消息处理函数里运行该段代码,菜单就变正常了!


请问是什么原因会这样??
...全文
69 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
shuirh 2009-12-22
  • 打赏
  • 举报
回复
又学到了一些新东西。
sandyandy 2009-12-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 arong1234 的回复:]
在frame,view结构中,是有WM_UPDATE_COMMAND_UI消息的,它控制菜单是不是变灰。如果激活窗口没有处理这个消息,或者这个消息中设置菜单变灰,就是灰的

对话框中没有WM_UPDATE_COMMAND_UI消息,菜单状态将是你创建菜单时的状态,除非你手工修改

[/Quote]

正解
zufei 2009-12-22
  • 打赏
  • 举报
回复
哦,原来是这样.谢谢
arong1234 2009-12-21
  • 打赏
  • 举报
回复
在frame,view结构中,是有WM_UPDATE_COMMAND_UI消息的,它控制菜单是不是变灰。如果激活窗口没有处理这个消息,或者这个消息中设置菜单变灰,就是灰的

对话框中没有WM_UPDATE_COMMAND_UI消息,菜单状态将是你创建菜单时的状态,除非你手工修改

15,979

社区成员

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

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