Включение \ отключение кнопок CMFCToolBar при встраивании в панель

Я знаю, что лучший способ включить / отключить кнопку из CMFCToolBar — это использовать

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

но это, похоже, не работает, когда панель инструментов встроена в CDockable Pane. У меня есть производный класс для CMFCToolBar, который необходим для включения кнопок на панели, но ничего, что я пробовал, не отключит их.

0

Решение

Хорошо, я обнаружил, что единственным решением было не использовать стандартные методы отключения кнопок, а поместить условия в каждую из функций обновления команды on и использовать pCmdUI-> Enable (FALSE); мало чем отличается от того, что вы сделали бы с меню.

1

Другие решения

Я знаю, что этой теме уже несколько лет, но я нашел другой способ сделать это, унаследовав CMFCToolBar и сделав следующую перезапись:

  ON_MESSAGE(WM_IDLEUPDATECMDUI, OnIdleUpdateCmdUI)

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

Затем используйте кнопку стиля TBBS_DISABLED для включения / выключения кнопки, а затем вызовите функцию AdjustLayout () для обновления. Таким образом, вам не нужен обработчик обновления для каждой кнопки.

PS. «wparam» управляет отключением, когда нет обработчика.

0

По вопросам рекламы [email protected]