Мне нужно создать кнопку панели заголовка для CDockablePane, которая вызовет меню с различными параметрами. Я попытался использовать CMFCCaptionMenuButton, и кнопка и меню отображаются, но методы карты сообщений для идентификаторов меню не срабатывают. В документации MFC указано, что CMFCCaptionMenuButton предназначен для внутренней инфраструктуры, а не для вашего кода.
Итак, если предположить, что это моя проблема, должен ли я использовать CMFCCaptionBarButton, а затем создавать отдельное всплывающее меню? Кто-нибудь раньше делал подобное меню на основе строки заголовка в MFC?
Вот несколько сокращенных фрагментов кода на случай, если я допустил глупую ошибку при подключении событий:
BEGIN_MESSAGE_MAP(CDockPane, CDockablePane)
ON_COMMAND(ID_MORPH_BROWSER, OnMorphBrowser)
END_MESSAGE_MAP()
void CDockPane::OnPressButtons(UINT nHit)
{
// only for custom button handling don't call base
// close, maximize, and pin will be handled by default
switch (nHit)
{
case ID_MORPHTEST:
{
CMorphMenuButton* pButton = dynamic_cast<CMorphMenuButton*>(m_arrButtons.GetAt(m_morphIndex));
pButton->ShowMenu(this);
break;
}
}
}
void CDockPane::SetCaptionButtons()
{
CDockablePane::SetCaptionButtons(); // for close, pin etc
m_morphIndex = m_arrButtons.Add(new CMorphMenuButton(ID_MORPHTEST));
}
void CDockPane::OnMorphBrowser()
{
// do stuff on menu item click
}
Изменить: удален предыдущий код, который больше не используется.