更新工具栏按钮状态 MFC

Posted

技术标签:

【中文标题】更新工具栏按钮状态 MFC【英文标题】:Updating toolbar button state MFC 【发布时间】:2012-07-06 07:36:03 【问题描述】:

我在 MFC 应用程序中有一个对话框,它有菜单栏。现在,我使用菜单栏中的相同命令 ID 在该对话框中创建了一个工具栏。

我用来更新菜单项的状态,并根据ON_UPDATE_COMMAND_UI 中的某些检查使其启用/禁用,当我单击菜单时。但是对于工具栏,我没有收到这些调用来更新它的状态,如果它应该被启用/禁用。

此外,当测试失败并且我禁用该项目时,我没有任何通知。

有没有其他方法可以做到这一点?

谢谢

只有当我点击工具栏按钮时才会调用ON_UPDATE_COMMAND_UI

【问题讨论】:

【参考方案1】:

在对话框中使用 MFC 可能会令人沮丧。

我建议您在将状态更改为将启用/禁用菜单的变量时直接禁用工具栏按钮:

void CtestDlg::OnBnClickedButton_DisableSomeControls()

command_menu_1 = !command_menu_1;
m_ToolBar.GetToolBarCtrl().EnableButton(ID_COMMAND_TEST, command_menu_1);

不是很优雅,但是很管用!

【讨论】:

这对我来说感觉一样。即使在我的情况下,对话框也是无模式的,所以即使我也无法使用 KICKIDLE 来做到这一点,因为这是我第一次使用空闲时间的东西。此外,它是一个遗留代码,不仅有一个变量的更新禁用/启用工具栏的按钮,而且还有很多检查。

以上是关于更新工具栏按钮状态 MFC的主要内容,如果未能解决你的问题,请参考以下文章

为啥我在MFC Toolbar里添加一个按钮,并且写好了这个按钮的消息处理函数,运行的时候还是没有显示出来?

MFC-单击按钮打开对话框

更新工具栏按钮状态会窃取另一个窗口的焦点

MFC:隐藏工具栏按钮

以编程方式从 MFC 工具栏中完全删除按钮

mfc中的CMFCToolBar类怎么实现工具栏上的按钮多行显示??急!!!