0

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

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

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

4

2 回答 2

1

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

于 2013-07-22T23:37:43.337 回答
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' 控制是否在没有处理程序时禁用。

于 2016-10-28T09:06:59.757 回答