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



我使用的是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); 

祝你好运:(

  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

相关内容

  • 没有找到相关文章

最新更新