MFC:从 CView 访问 m_wndToolBar?

Posted

技术标签:

【中文标题】MFC:从 CView 访问 m_wndToolBar?【英文标题】:MFC: Access m_wndToolBar from CView? 【发布时间】:2019-11-15 04:22:59 【问题描述】:

我需要稍微超越标准 MFC 处理启用和禁用工具栏项的方法。那部分有效并且很棒。但我有一个CTreeView,我还需要根据在树视图上选择的内容启用/禁用工具栏项。我可以通过AfxGetMainWnd() 获得CMainFrame 指针,但m_wndToolBar 无法访问。

在 MFC 中处理此问题的推荐方法是什么?

TIA!!

【问题讨论】:

【参考方案1】:

一种解决方案是简单地将GetMyToolbar 公共方法添加到您的CMainFrame 类中,这将返回指向m_wndToolBar 的指针。

CMFCToolBar* CMainFrame::GetMyToolbar()

   return &m_wndToolBar;

【讨论】:

这样做工具栏没有更新。事实证明,做我需要的正确方法是在 CTreeView 中为工具栏项设置一个 UPDATE_COMMAND_UI。然后使用pCmdUI->Enable() 设置正确的状态。不错。 @df234987 我认为这是因为 doc 样式项目旨在使用 UPDATE_COMMAND_UI 机制。因此,如果您手动执行操作,它们可能会被机制覆盖。很好,你整理好了。也许添加您自己的答案。

以上是关于MFC:从 CView 访问 m_wndToolBar?的主要内容,如果未能解决你的问题,请参考以下文章

MFC 功能区:CView::OnUpdate 中的 RemoveAllSubItems() 导致访问冲突 (VS2008)

CView::OnFilePrint 崩溃 MFC 应用程序

初识MFC----视图窗口类CView

MFC 10 - 是不是可以在 CView 中有一个 CFrameWnd?

MFC:调用 CView::OnInitalUpdate() 后调用哪个 CFrameWnd 函数?

如何在保持文档打开的同时关闭 MFC CVIEW