Как получить доступ к обработчикам cmainframe onupdate из модального диалогового окна?
Чтобы использовать мою программу с сенсорным экраном планшета, я создал альтернативу меню. В модальное диалоговое окно у меня есть член CMenu, который загружает главное меню из ресурса.
В диалоговом окне я могу заполнить кнопки пунктами меню, используя элементы класса CMenu. Это работает, но мне нравится обращаться к обработчикам обновлений в CMainframe, чтобы установить статус пункта меню из CCmdUI, как это:
void CMainFrame::OnUpdateViewInstant(CCmdUI* pCmdUI) { pCmdUI->Enable(); pCmdUI->SetCheck(m_wndInstantBar.IsVisible()); }
Я не хочу копировать их как членов диалога, чтобы избежать кошмара обслуживания.
Возможна ли такая маршрутизация?
Что я уже пробовал:
CCmdUI CmdUI;
...
CmdUI.DoUpdate(AfxGetMainWnd (), FALSE);
Jochen Arndt
Это не сработает, потому что обработчики обновлений вызываются только для фреймовых окон, а не для других типов окон, таких как диалоги.
Аналогичное поведение можно реализовать и для диалогов. Видеть
https://support.microsoft.com/en-us/help/242577/you-cannot-change-the-state-of-a-menu-item-from-its-command-user-interface-handler-if-the-menu-is-attached-to-a-dialog-box-in-visual-c
Но это все равно требует реализации обработчиков дважды.