在 CMFCToolBar 中禁用项目

Posted

技术标签:

【中文标题】在 CMFCToolBar 中禁用项目【英文标题】:Disable item in CMFCToolBar 【发布时间】:2012-02-21 10:04:20 【问题描述】:

我正在尝试升级我的 MFC MDI 应用程序以使用新的 MFC 功能包。

我将 CToolbar 转换为 CMFCToolBar。现在我试图在某些条件下禁用工具栏中的一项。我听取了项目 ID 的 ON_UPDATE_COMMAND_UI 消息并通过编写以下内容禁用了该项目:

pCmdUI->启用(FALSE);

仅当 ON_UPDATE_COMMAND_UI 消息在 CView 对象中处理但在 CMFCToolbar 派生类中处理时,此方法才能完美运行。

是否有办法从工具栏类本身禁用项目?

【问题讨论】:

【参考方案1】:

工具栏不是 MFC 中命令路由的一部分。所以它永远不会得到命令和更新命令 UI 消息。详细的命令路由可以看这里:MFC Command Routing

您可以在其中一个获取命令消息的对象中覆盖 OnCmdMsg() 方法(如您在上面的链接中所见)并将消息传递到工具栏。

【讨论】:

以上是关于在 CMFCToolBar 中禁用项目的主要内容,如果未能解决你的问题,请参考以下文章

如何在动态创建的 CMFCToolbar 的 ToolTip 中添加描述?

运行时 CMFCToolbar 中的按钮没有被替换

如何使浮动 CMFCToolbar 不可移动

如何更改 CMFCToolBar 运行时

为啥我的 CMFCToolBar 在 CDialog 上重叠?

MFC:如何让 CMFCToolBarComboBoxButton 显示在 CMFCToolBar 上?