在MFC中如何在BCN_DROPDOWN事件中显示列表框的拆分按钮控件

时间:2018-10-31 12:38:43

标签: mfc

我正在使用VS2008。

我有一个基于MFC对话框的应用程序,用于拆分按钮控件。

我想在拆分按钮控件的BCN_DROPDOWN事件上显示一个列表框。我不知道该怎么实现?

2 个答案:

答案 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)

  1. 您必须将菜单添加到资源中。 例如:IDR_MENU_BUTTON_ANY

  2. 为子菜单声明一些资源符号。它将更改* .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