我正在使用VS2008。
我有一个基于MFC对话框的应用程序,用于拆分按钮控件。
我想在拆分按钮控件的BCN_DROPDOWN事件上显示一个列表框。我不知道该怎么实现?
答案 0 :(得分:0)
参考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);
祝你好运:)
答案 1 :(得分:-1)
您必须将菜单添加到资源中。 例如: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