基于文档的MFC项目中 系统菜单设置check
来源:互联网 发布:百度大数据产品 编辑:程序博客网 时间:2024/05/17 11:04
为了实现上面两幅图片中所示的菜单的check效果,需要为“子菜单1-1”“子菜单1-2”等check菜单追加事件处理程序,步骤如下:
1、在资源文件中,选中要追加事件处理程序的菜单项,点击右键,选中“添加事件处理程序”。弹出的窗口中,消息类型选择“COMMAND”,类列表中选择“CMainFrame”,点击添加编辑。追加了事件处理程序的菜单项处于Enable状态,没有追加的处于Disable状态。
2、VS会自动跳转到MainFrame.cpp文件中响应的消息函数里面。下面就要开始添加代码了。
首先,获取菜单的check状态。可以使用以下两个函数:(都是CMenu类的成员函数)
UINT CheckMenuItem(UINT nIDCheckItem, UINT nCheck);
UINT GetMenuState(UINT nID, UINT nFlags) const;
设置菜单状态:(就是上面提到的函数)
UINT CheckMenuItem(UINT nIDCheckItem, UINT nCheck);
对于nCheck,有以下两种选择:
MF_BYCOMMAND :则nIDCheckItem为ID
MF_BYPOSITION : 则nIDCheckItem为菜单项相对于父菜单的位置索引。
以下两段代码设置check状态都是对的:
a> void CMainFrame::On1111()
{
CTestMenuApp *app = (CTestMenuApp *)AfxGetApp();
UINT uStatus = GetMenu()->CheckMenuItem(ID_11_11, MF_BYCOMMAND);
if (uStatus == MF_CHECKED)
{
GetMenu()->CheckMenuItem(ID_11_11, MF_BYCOMMAND | MF_UNCHECKED);//取消标记
app->DisplayOriginFlag = false;
}
else if (uStatus == MF_UNCHECKED)
{
GetMenu()->CheckMenuItem(ID_11_11, MF_BYCOMMAND | MF_CHECKED);//标记
app->DisplayOriginFlag = true;
}
GetActiveView()->GetDocument()->UpdateAllViews(NULL);//更新视图
}
b>void CMainFrame::On1111()
{
static BOOL bIsChecked = false;
UINT uStatus = GetMenu()->GetSubMenu(4)->GetSubMenu(0)->CheckMenuItem(0, MF_BYPOSITION);
uStatus = GetMenu()->GetSubMenu(4)->CheckMenuItem(ID_11_11, MF_BYCOMMAND);
if (uStatus == MF_CHECKED)
{
GetMenu()->GetSubMenu(4)->GetSubMenu(0)->CheckMenuItem(0,MF_BYPOSITION | MF_UNCHECKED);//取消标记
app->DisplayOriginFlag = false;
}
else if (uStatus == MF_UNCHECKED)
{
GetMenu()->GetSubMenu(4)->GetSubMenu(0)->CheckMenuItem(0, MF_BYPOSITION | MF_CHECKED);//标记
app->DisplayOriginFlag = true;
}
GetActiveView()->GetDocument()->UpdateAllViews(NULL);//更新视图
}
关于菜单的位置索引:
对于菜单栏的子菜单,由左至右从0开始索引。
对于特定的子菜单的菜单项,由上至下建立从0开始的索引。(转自菜单结构)
如下图:
- 基于文档的MFC项目中 系统菜单设置check
- MFC中菜单设置
- mfc单文档获取顶层菜单的菜单项文本,并设置响应菜单命令范围
- MFC菜单栏check设置:使菜单项前带有勾选标志,再点击消失的实现
- MFC中动态设置组合框的下拉菜单高度
- 去掉基于FormView的MFC单文档默认菜单和工具栏的方法
- 基于文档的MFC程序
- MFC 调用系统菜单的子菜单在窗口非最大化时设置不可用解决方案
- 基于MFC的视频监控系统客户端实现 ---项目经验
- VC中MFC check box的用法
- VC中MFC check box的用法
- 基于VS2010的MFC动态菜单
- 基于对话框的MFC - 添加菜单
- 基于VS2010的MFC动态菜单
- mfc 中 系统自带的 菜单中的 移动菜单 无法 置灰
- VC 系统菜单打勾,MFC Dialog SYS menu check CheckMenuItem
- Camera系统中设置picture大小菜单的流程分析
- Camera系统中设置picture大小菜单的流程分析
- UVa 10129 单词
- 仇富者难富
- (三)Android布局之表格布局(TableLayout)
- BestCoder Round #28
- 伟厦绽辽缮翱蠢揽男敲
- 基于文档的MFC项目中 系统菜单设置check
- keystore creation
- spring配置hibernate抛出read only 异常
- 设置GridView的item为正方形
- 一个提高SQL Server操作效率的软件
- 开源控件收集
- 2015年软件开发的4大重要发展趋势
- 命名管道,read函数不阻塞的解决方法
- 解决Joomla登录后台时500-发生一个错误