MFC Как определить, предназначен ли ON_UPDATE_COMMAND_UI для панели меню или панели инструментов?

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

Как определить, предназначен ли вызов ON_UPDATE_COMMAND_UI для строки меню или панели инструментов?


person user3161924    schedule 27.02.2021    source источник
comment
Используйте разные идентификаторы команд для меню и кнопки панели инструментов, так как в любом случае не похоже, что они реализуют одно и то же поведение.   -  person dxiv    schedule 27.02.2021
comment
Идея заключалась в выборе нескольких вариантов, которые можно было выбрать с помощью раскрывающейся панели инструментов, но щелчок по ней на самом деле ничего не делает (просто визуализирует текущую опцию), я могу переосмыслить, что делать с панелью инструментов.   -  person user3161924    schedule 27.02.2021


Ответы (1)


Вы можете проверить элемент m_pMenu заданного CCmdUI параметра обработчика; если подпрограмма была вызвана для пункта меню, это будет действительный указатель CMenu*; если нет, то будет NULL:

void CMyClass::OnUpdateHandler(CCmdUI *pCmdUI)
{
   if (!pCmdUI->m_pMenu) {
       // NOT for a menu
   }
   else {
       // For a menu
   }
}
person Adrian Mole    schedule 27.02.2021