也许太简单了,搜了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 菜单项及工具栏按钮启用与禁用" 是一个常见的需求,尤其是在设计用户交互时,根据特定条件控制菜单项和工具栏按钮的状态。这涉及到Windows编程中的消息处理和控件状态管理。 1. **菜单项和工具栏按钮**: - ...
本篇将详细讲解如何利用MFC来禁用和启用菜单项。 一、MFC菜单基础 MFC将Windows的菜单对象封装为CMenu类,我们可以通过CFrameWnd或CDocument的成员函数来访问和操作菜单。在VC++ 6.0中,通常在OnCreate()或...
- 工具栏按钮可以有多种状态,如启用、禁用、按下等。在程序中通过OnUpdateCmdUI函数来更新这些状态。 7. **绑定工具栏按钮**: - 使用ON_BN_CLICKED宏将工具栏按钮ID与处理函数关联。与菜单类似,当用户点击按钮...
VC 窗口工具栏编程技巧集【源码】,同时还包括了状态栏相关技巧,可熟悉掌握以下工具栏相关编程技巧:停靠工具栏的制作实现, 为工具栏设置热点图像 为工具栏添加文本标签 启用或禁用工具栏的工具提示 ...
本文将深入探讨如何在VC++中启用或禁用工具栏的工具提示,这对于理解和优化用户界面体验至关重要。 首先,我们需要了解MFC(Microsoft Foundation Classes)库在VC++中的作用。MFC是微软提供的一套C++类库,用于...
标题中的"VC TOOB_vc Toolbar Backcol_vc toolbar_工具栏_工具栏 对话框"暗示我们将探讨VC++中的工具栏设计,包括自定义颜色(Backcol)以及如何将工具栏集成到对话框(Dialog)中。 首先,我们来看一下**工具栏的...
在VC++的MFC(Microsoft Foundation Classes)框架中,工具栏是常见的用户界面元素,用于提供快捷操作...在实际项目中,还可以进一步扩展,如添加自定义菜单、子菜单,或者实现动态加载和卸载工具栏,以满足不同需求。
- 在初始化或消息处理函数中,使用`EnableMenuItem`来启用或禁用菜单项,`ShowWindow`来显示或隐藏工具栏。 5. 图标和位图: - 使用资源编辑器添加位图资源,为菜单项和工具栏按钮分配图标。通过`LoadIcon`、`...
"VC动态真彩工具栏代码"是指利用Microsoft Visual C++(VC++)进行程序设计时,实现工具栏动态加载和显示高色彩(通常指24位或更高的色彩深度)图像的技术。下面我们将深入探讨这一主题。 首先,我们了解工具栏的...
"vc工具栏封装类(超炫的)" 是一个专为VC++开发者设计的库,它提供了一种高效且易于使用的工具栏实现方式,以提升应用程序的用户界面体验。 这个工具栏封装类可能包含以下关键知识点: 1. **自定义控件**:封装类...
5. **更新UI**:如果你的菜单项状态需要根据程序状态动态改变(如禁用或启用),你需要使用`UpdateMenu`或`EnableMenuItem`函数来更新菜单的显示。 6. **动态菜单**:除了静态定义菜单外,还可以在运行时动态创建或...
在实际开发中,你可能还会遇到如何动态更新工具栏、添加自定义菜单项到工具栏、以及与其他控件交互等问题。这些问题可以通过深入学习MFC框架和VC++ 6.0的文档来解决。记得在编程过程中不断实践和探索,这将有助于你...
4. 可以通过修改工具栏的属性,比如禁用、启用、可见性等,来改变其行为。 最后,提到的“特色菜单”可能是指自定义的下拉菜单。菜单是应用程序中另一种常见的交互元素,包含一系列可选择的选项。在VC++中,我们...
通过BHO,开发者能够扩展浏览器的功能,比如添加新的菜单项、工具栏按钮或者改变网页的行为。 在“如何往IE工具条添加按钮 Adding Toolbar Buttons往IE上添加工具条 用VC在IE浏览器的工具条上添加命令按钮.zip”这...
同时,插件可能还需要与VC6.0的用户界面元素进行交互,比如自定义菜单项或工具栏按钮,让用户可以轻松地启用或禁用行号显示。 使用行号插件的好处在于: 1. **快速定位**:行号有助于快速找到代码中的特定位置,...
安装完成后,当你启动VC6.0,可能会发现一个新的菜单项或工具栏按钮,用于启用或禁用行号显示。点击这个选项,编辑器将立刻显示代码行号。行号通常是灰色的,不会干扰到正常的代码编辑,而且通常可以根据个人喜好...
3. **动态更新工具栏**:根据程序运行状态,可以动态地启用、禁用或改变按钮状态。 4. **创建状态栏**:使用CStatusBar类,定义pane,并通过UpdateData成员函数来更新pane的内容。 5. **使用 pane**:pane 可以...
③、菜单项的启用与禁用。 13、对话框的工具栏操作 ①、工具栏的创建; ②、工具栏按钮的响应。 14、对话框的状态栏操作 ①、状态栏的创建; ②、状态栏显示时钟、鼠标位置、鼠标点的颜色信息等。 15、一个...
4. **更新UI状态**:在MFC中,`ON_UPDATE_COMMAND_UI`宏用于在运行时更新UI元素的状态,如禁用/启用按钮,显示/隐藏菜单项等。对于工具栏图标,可能需要根据程序的状态改变按钮的外观,例如,通过调用`EnableButton`...
在“VC教学word文档”中,我们主要探讨了关于Visual C++(VC)的一些核心概念和技术,主要包括交互式图形显示技术、VC编程的特点、软件安装与基本操作、菜单功能、工具栏的创建以及光标、图标、键盘命令和窗口提示...