想实现一个带下拉选择的按钮,用到了MenuButton这个控件,程序的前提是一个基于对话框的界面程序,首先添加MenuButton这个空间,如图

然后在资源视图中添加Menu资源,如图

并定义每个下拉内容的ID
然后就是想把按钮跟菜单关联起来,通过查资料,首先定义一个MenuButton的控件变量
m_MenuButton
然后在对话框初始化函数
OnInitDialog()中
添加如下代码
CMenu* pMenu = new CMenu;
pMenu->LoadMenu(IDR_MENU); // 载入菜单资源
m_MenuButton.m_hMenu = pMenu->GetSubMenu(0)->GetSafeHmenu(); // 将CMFCMenuButton和Menu IDR_MENU1关联
在资源视图中双击MenuButton这个按钮,就会自动添加消息响应等函数
ON_BN_CLICKED(IDC_MFCMENUBUTTON1, &CTestMfcDlg::OnBnClickedMfcmenubutton1)
然后在对话框的程序中添加
void CTestMfcDlg::OnBnClickedMfcmenubutton1()
{
if(m_MenuButton.m_nMenuResult == ID_IDR1)
{
AfxMessageBox(_T("item1"));
}
else if(m_MenuButton.m_nMenuResult == ID_IDR2)
{
AfxMessageBox(_T("item2"));
}
return;
}
运行结果就会崩溃,问题出在关联菜单的代码部分,我就想实现一个带下拉条的按钮,然后可以多选,然后取得值再传给相应的文本框,求教这么做的方法是否正确?
------解决思路----------------------
void CTestMfcDlg::OnBnClickedMfcmenubutton1()
{
if(m_MenuButton.m_nMenuResult == ID_IDR1)
{
AfxMessageBox(_T("item1"));
}
else if(m_MenuButton.m_nMenuResult == ID_IDR2)
{
AfxMessageBox(_T("item2"));
}
return;
}
干吗这么搞,映射ON_COMMAND就可以了