关于网友提出的“ MFC怎么在选中的菜单项前面打勾并获取菜单项的值”问题疑问,本网通过在网上对“ MFC怎么在选中的菜单项前面打勾并获取菜单项的值”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: MFC怎么在选中的菜单项前面打勾并获取菜单项的值
描述: 菜单项下拉是串口COM1,怎么选中后前面打勾然后怎么把COM1获取?
CMenu *pMenu=GetMenu();
ASSERT_VALID(pMenu);
CMenu *pSubMenu=pMenu->GetSubMenu(1);
ASSERT_VALID(pSubMenu);
pSubMenu->CheckMenuItem(ID_PARAMETER_COM1,MF_BYCOMMAND|MF_CHECKED);
上面这段代码放到BOOL CdriverDlg::OnInitDialog()中运行后就直接打勾了还不能更换,怎么弄呢?本人初学者,帮帮忙吧,谢谢
解决方案1: 在‘资源视图’(可在view菜单打开)中,点‘Menu’,在可视化环境中点击菜单,右键单击菜单项“com1”,再谈出菜单中点‘添加事件处理程序’。其中command 消息处理函数当点击菜单项目时被调用;UPDATE_command_UI 消息处理函数用于当点击菜单项目时更改界面。在这个函数里使用setcheck可以设置菜单项 打勾与否。
例子:
void CMainFrame::OnUpdateSelectBlue(CCmdUI* pCmdUI)
{
pCmdUI->SetCheck(true);//把菜单选中
}
根据某个状态开关菜单,也可以为菜单生成命令接口更新成员函数。比如,在Edit菜单中,如果当前剪贴板没有内容,Paste(粘贴)菜单应当设为无效,程序可以这么写:
void CMainFrame::OnUpdateEditPaste(CCmdUI* pCmdUI)
{
pCmdUI->Enable(!IsClipboardEmpty());
}
其中IsClipboardEmtpy()是读者自己编写的函数,用于判断剪贴板中是否有内容
解决方案2: 你可以通过一个Bool类型的变量进行判断,如果为真就setCheck(True),如果为假就setCheck(Flase)
解决方案3: getcheck 或者setcheck函数吧?
解决方案4: 对话框要实现对菜单标记的功能需要处理OnInitMenuPopup
参考http://kelvin0008.blog.sohu.com/10803055.html
以上介绍了“ MFC怎么在选中的菜单项前面打勾并获取菜单项的值”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/2219623.html