Я использую VS2008.
У меня есть приложение на основе диалогового окна MFC с кнопкой разделения.
Я хочу отобразить список в событии BCN_DROPDOWN элемента управления разделенной кнопкой. Я не знаю, как этого добиться?
Подумав еще раз, какую проблему вы пытаетесь решить с помощью В самом деле, для которой ваше предлагаемое решение состоит в том, чтобы повторно реализовать функциональность разделенной кнопки?
Ссылка на документацию класса CSplitButton: https://msdn.microsoft.com/en-us/library/bb514109.aspx
Если вы хотите изменить поведение по умолчанию, используйте переопределение:
BEGIN_MESSAGE_MAP(CMySplitButton,
CSplitButton)
ON_NOTIFY_REFLECT(BCN_DROPDOWN, &CMySplitButton::OnDropDown)
END_MESSAGE_MAP()
(...)
afx_msg void OnDropDown(NMHDR* pNMHDR, LRESULT* pResult);
Вы можете в этой функции показать свой список или что угодно.
Если в списке вы ссылаетесь на фактическое подменю (3), как показано в документации, добавьте меню: https://msdn.microsoft.com/en-us/library/4b6tafew.aspx и установите идентификатор ресурса для этого меню в функцию SetDropDownMenu ().
void SetDropDownMenu(
UINT nMenuId,
UINT nSubMenuId);
Удачи :)
Вы должны добавить свое меню в ресурс. Пример: IDR_MENU_BUTTON_ANY
Объявите некоторые символы ресурсов для подменю. Это изменит * .rc и resource.h.
Ваш ресурс будет выглядеть так:
IDR_MENU_BUTTON_ANY
BEGIN
POPUP "SampleMenu"
BEGIN
MENUITEM "Sub1", ID_SUB_MENU_1
MENUITEM "Sub2", ID_SUB_MENU_2
END
END
Когда вы инициализируете свой диалог. Вы должны вставить код, как показано ниже:
//Your split button
CMFCSplitButton m_btnAny;
//Set dropdown menu
m_btnAny.SetDropDownMenu(IDR_MENU_BUTTON_ANY, 0);
Более того, я нашел следующую ссылку. Автор привел пример. Это может вам помочь. http://codexpert.ro/blog/2013/02/01/split-button-control/#comment-22983
Либо создайте элемент управления списком в обработчике элемента управления кнопки, либо покажите поле списка, если оно уже существует. С чем у вас проблемы?