嵌入窗格时启用\禁用CMFCToolBar按钮

时间:2013-07-22 23:20:43

标签: c++ button mfc pane cmfctoolbar

我知道从CMFCToolBar启用/禁用按钮的最佳方法是使用

  int b_id = m_ToolBar.CommandToIndex(ID_BUTTON);
    m_ToolBar.SetButtonStyle(b_id,TBBS_DISABLED);

但是当工具栏嵌入在CDockable窗格中时,这似乎不起作用我有一个CMFCToolBar的派生类,这是启用窗格中的按钮所必需的,但我尝试过的任何内容都将禁用它们。

2 个答案:

答案 0 :(得分:1)

好的我发现唯一的解决方案是不使用禁用按钮的标准方法,而是将条件放在每个on命令更新函数中并使用pCmdUI-> Enable(FALSE);与你对菜单的做法没什么不同。

答案 1 :(得分:0)

我知道这个话题已有几年了,但我发现另一种方法是继承CMFCToolBar并进行以下覆盖:

  ON_MESSAGE(WM_IDLEUPDATECMDUI, OnIdleUpdateCmdUI)      

      afx_msg LRESULT OnIdleUpdateCmdUI(WPARAM wParam, LPARAM lParam) {
        return __super::OnIdleUpdateCmdUI(0, lParam);
      }

然后使用按钮样式TBBS_DISABLED启用/禁用按钮 - 然后调用AdjustLayout()进行更新。这样,您就不需要每个按钮都有一个更新处理程序。

PS。 ' wparam'控制是否在没有处理程序时禁用。