我知道从CMFCToolBar启用/禁用按钮的最佳方法是使用
int b_id = m_ToolBar.CommandToIndex(ID_BUTTON);
m_ToolBar.SetButtonStyle(b_id,TBBS_DISABLED);
但是当工具栏嵌入在CDockable窗格中时,这似乎不起作用我有一个CMFCToolBar的派生类,这是启用窗格中的按钮所必需的,但我尝试过的任何内容都将禁用它们。
答案 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'控制是否在没有处理程序时禁用。