想在主窗口中使用CMFCMenuButton控件实现如下图所示的菜单按钮,需要在用户点击“允许数据采集”菜单项时获取菜单项的选中状态,并改变check状态,使得设置生效。
其中菜单资源文件为 IDR_MENU_STORAGE,“允许数据采集”菜单项ID为 ID_MENU_ALLOW_STORAGE。
我在窗口的OnInitDialog()中实现如下代码:
// IDR_MENU_STORAGE
CMenu* pMenuStorage = new CMenu;
if(TRUE == pMenuStorage->LoadMenu(IDR_MENU_STORAGE)) // 载入菜单资源
{
m_menubtn_storage.m_hMenu = pMenuStorage->GetSubMenu(0)->GetSafeHmenu();
}else
{
TRACE("resource load failed!");
}
在按钮响应行数中实现代码如下:
void CATC_TestSvcDlg::OnBnClickedMfcmenubuttonDatastorage()
{
// TODO: 在此添加控件通知处理程序代码
switch(m_menubtn_storage.m_nMenuResult)
{
case ID_MENU_ALLOW_STORAGE:
{
CMenu* pMenu = m_menubtn_storage.GetMenu();
if(pMenu)
{
UINT state = pMenu->GetMenuState(ID_MENU_ALLOW_STORAGE, MF_BYCOMMAND);
ASSERT(state != 0xFFFFFFFF);
if (state & MF_CHECKED)
pMenu->CheckMenuItem(ID_MENU_ALLOW_STORAGE, MF_UNCHECKED | MF_BYCOMMAND);
else
pMenu->CheckMenuItem(ID_MENU_ALLOW_STORAGE, MF_CHECKED | MF_BYCOMMAND);
}
}
break;
case ID_MENU_..........:
break;
default:
break;
}
在执行点击“允许数据采集”菜单项,获得响应后,在程序执行到红色代码段时, 出现异常如图所示:
显示hMenu为unused
这个问题困扰很久,求大神解救