我使用的是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并将该菜单的资源ID设置为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