也许太简单了,搜了N久,问了N多人,都没有找到解决异常的办法。
VC(6.0-2010)中已经指明UPDATE_COMMAND_UI就是用来设置菜单及命令按钮的状态的。
完全没有必要这样(会产生异常):
CMenu* menu =GetMenu();//经验证VC6.0中应该是 CMenu* menu =AfxGetMainWnd()->GetMenu();
CMenu* subMenu =menu->GetSubMenu(1);
subMenu->EnableMenuItem(1, MF_BYPOSITION|MF_DISABLED);
同时还得在CMainFrame的构造函数或者OnCreate中this->m_bAutoMenuEnable = false;
当菜单ID和ToolBar按钮ID一致时,仅菜单生效,并不能同步。
以上方法在VC2010中根本无法用。
简单方法如下:
假设菜单ID为ID_ZOOM_IN,在CXXView类中建立bool类型的成员变量m_isZoomInEnabled,用来标识菜单
或工具栏按钮的启用与禁用状态。在需要禁用的地方将m_isZoomInEnabled置为false,在需要启用的地方将
m_isZoomInEnabled置为true就可以了,同时在ID上点右键并在CXXView类(也可以是其它类)中添加消息类
型为UPDATE_COMMAND_UI的事件。
void CXXView::OnUpdateZoomIn(CCmdUI *pCmdUI)
{
// TODO: 在此添加命令更新用户界面处理程序代码
pCmdUI->Enable(m_isZoomInEnabled); //仅此一句就可以了
}
若要菜单与工具栏按钮同步,仅需菜单项ID与工具栏按钮ID一致就可以了。
以上方法在VC的SDI与MDI工程中都可以。
源程序:http://download.csdn.net/detail/xinzheng_wang/4336357
分享到:
相关推荐
VC 菜单项及工具栏按钮启用与禁用,SDI与MDI工程均可。VC6.0的源程序,可用VC2010直接打开编译。
VC 窗口工具栏编程技巧集【源码】,同时还包括了状态栏相关技巧,可熟悉掌握以下工具栏相关编程技巧:停靠工具栏的制作实现, 为工具栏设置热点图像 为工具栏添加文本标签 启用或禁用工具栏的工具提示 ...
摘要:VC/C++源码,界面编程,工具栏 VC++启用或禁用工具栏的工具提示,也就是放在工具栏的菜单按钮上,会出现文字提示,本实例程序可以禁止或启用这些提示,仅供VC++初学者参考。
③、菜单项的启用与禁用。 13、对话框的工具栏操作 ①、工具栏的创建; ②、工具栏按钮的响应。 14、对话框的状态栏操作 ①、状态栏的创建; ②、状态栏显示时钟、鼠标位置、鼠标点的颜色信息等。 15、一个...
启用或禁用工具栏的工具提示 设置工具栏的标题 设置工具栏的位图 使用组合栏 停靠工具栏 为工具栏按钮设置热点图像 为工具栏按钮添加文本标签 为工具栏按钮添加下拉箭头 显示或隐藏工具栏和状态栏...
7.2 例23 启用和禁用工具栏按钮 122 7.3 例24 为工具栏按钮添加字 123 7.4 例25 非标准工具栏大小 128 7.5 例26 保持工具栏按钮按下 129 7.6 例27 保持工具栏按钮组中 一个按钮按下 130 7.7 例28 为工具栏添加非按钮...
7.2 例23 启用和禁用工具栏按钮 122 7.3 例24 为工具栏按钮添加字 123 7.4 例25 非标准工具栏大小 128 7.5 例26 保持工具栏按钮按下 129 7.6 例27 保持工具栏按钮组中 一个按钮按下 130 7.7 例28 为工具栏添加非...
为实现静态编译,易语言编译器、核心支持库、集成开发环境(IDE)等均有重大更新,支持库开发架框有扩展性调整,绝大多数官方支持库都已针对静态编译完成自身改造并提供静态库。 目前绝大多数官方支持库均已支持...