当前位置: 代码迷 >> VC/MFC >> MFC使用MenuButton的有关问题
  详细解决方案

MFC使用MenuButton的有关问题

热度:112   发布时间:2016-05-02 03:45:26.0
MFC使用MenuButton的问题
想实现一个带下拉选择的按钮,用到了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就可以了
  相关解决方案