孙鑫老师教学视频学习笔记——单文档中菜单操作
在框架类CMainFrame中的OnCreate消息响应函数中添加:
GetMenu()->GetSubMenu(0)->CheckMenuItem(0,MF_CHECKED | MF_BYPOSITION);//创建
或者GetMenu()->GetSubMenu(0)->CheckMenuItem(ID_FILE_NEW,
MF_UNCHECKED | MF_BYCOMMAND);//删除
在框架类CMainFrame中的OnCreate消息响应函数中添加:
GetMenu()->GetSubMenu(0)->SetDefaultItem(1,TRUE);//以索引方式
GetMenu()->GetSubMenu(0)->SetDefaultItem (ID_FILE_OPEN,FALSE);//以ID方式
注意:下拉菜单中的分隔栏也占用一个索引号;一个下拉菜单中只能有一个缺省菜单。
在框架类CMainFrame中的OnCreate消息响应函数中添加:
bitmap.LoadBitmap(IDB_BITMAP1);
GetMenu()->GetSubMenu(0)->
SetMenuItemBitmaps(0,MF_BYPOSITION,&bitmap,&bitmap);
注意:先通过函数GetSystemMetrics(SM_CXMAXTRACK)和GetSystemMetrics(SM_CYMAXTRACK)来
创建菜单屏蔽使用:
在框架类CMainFrame中的OnCreate消息响应函数中添加:
GetMenu()->GetSubMenu(0)->EnableMenuItem(1,MF_BYPOSITION |
MF_DISABLED | MF_GRAYED);
注意:必须在CMainFrame类的构造函数中m_bAutoMenuEnable = FALSE;才会使上述有效。
如何操作整个菜单:
在框架类CMainFrame中的OnCreate消息响应函数中添加:
SetMenu(NULL); //取消整个菜单栏
//重新加载整个菜单栏
CMenu menu; // 创建的是局部的menu,程序运行完要析构
menu.LoadMenu(IDR_MAINFRAME);
SetMenu(&menu);
menu.Detach(); //注意此语句必须加,可防止局部变量析构造成的错误
void CMainFrame::OnUpdateEditCut(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->Enable(); //使某菜单项可以使用
pCmdUI->>Enable(FALSE); //使某菜单项不能使用
}
或者 if(0==pCmdUI->m_nID); //通过ID判断是否为该菜单项
pCmdUI->>Enable(FALSE);
或者 if(0==pCmdUI->m_nIndex); //通过索引判断是否为该菜单项
pCmdUI->>Enable(FALSE);
注意:当通过索引进行判断时,只能改变菜单项的状态,不能改变工具栏中的状态
一种方式可以在工程菜单中选择添加到工程中的components and controls选项,添加一个
另一种方式是仿造OnContextMenu(CWnd*, CPoint point)函数内的操作,对右键消息响应函数
void CMenuView::OnRButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CMenu menu;
menu.LoadMenu(IDR_MENU1);
CMenu *pPopup=menu.GetSubMenu(0); //获取子菜单
ClientToScreen(&point); //将屏幕坐标转换为客户坐标
pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y,
this); //创建一个浮动的菜单
}
之后在ClassWizard中添加右键中菜单的消息相应函数。
动态添加菜单
pop菜单的动态操作:
在框架类CMainFrame中的OnCreate消息响应函数中添加:
CMenu menu;
menu.CreatePopupMenu();
//添加一个popup菜单
//GetMenu)->AppendMenu(MF_POPUP,(UINT)menu.m_hMenu,"Jazka");
//插入到某一位置的popup菜单
GetMenu()->InsertMenu(2,MF_BYPOSITION | MF_POPUP,(UINT)
//为popup菜单添加菜单项
menu.AppendMenu(MF_STRING,111,"Hello");
menu.AppendMenu(MF_STRING,112,"Well");
menu.Detach();
//在pop菜单的某一位置插入一个菜单项
//菜单项加到了最后一栏
GetMenu()->GetSubMenu(0)->AppendMenu(MF_STRING,113,"Welcome");
//菜单项加载到某一指定位置
GetMenu()->GetSubMenu(0)->InsertMenu(ID_FILE_OPEN,
MF_BYCOMMAND | MF_STRING,114,"飞雪");
//删除某一pop菜单
GetMenu()->DeleteMenu(1,MF_BYPOSITION);
//删除某一pop菜单的某一个菜单项
GetMenu()->GetSubMenu(0)->DeleteMenu(2,MF_BYPOSITION);
CString中选择某一部分的内容:m_strLine.Left(m_strLine.Find(' '));为寻找m_strLine的
当存储一些CString的对象时,用集合类CStringArray,可以动态增加。用ADD(LPCTSTR
用CFrameWnd::GetActiveView CView *GetActiveView() const;获取当前视类的指针。
孙鑫老师教学视频学习笔记——单文档中菜单操作相关推荐
- 孙鑫老师MFC视频使用的MSDN帮助文档下载及安装
原文:https://blog.csdn.net/qq_34720818/article/details/102482315 孙鑫老师MFC视频使用的MSDN帮助文档下载及安装 前言: 孙鑫老师的这个 ...
- Rancher 系列教学视频学习笔记(1)
Rancher 系列教学视频-学习笔记(1) 一.培训视频学习笔记1<容器管理平台Rancher官方介绍>(Rancher 1.0 发布) 视频地址:http://v.youku.com/ ...
- OCCT学习003-----MFC单文档工程
OCCT学习003-----MFC单文档工程创建 longlongway2012@hotmail.com 背景 window平台下开发软件,常用的c++界面开发主要使用MFC,虽然近些年几乎被淘汰,但 ...
- (二)MkDocs学习笔记——撰写文档
mkdocs学习笔记系列 (一)MkDocs 学习--快速开始 (二)MkDocs学习笔记--撰写文档 (三)MkDocs学习--配置主题 (四)MkDocs学习--自定义主题 (五)MkDocs学习 ...
- 在单文档中显示我的第一个对话框
在单文档中显示我的第一个对话框 (2010-04-19 21:19:50) 转载▼ 标签: it 今天编写了在单文档中创建对话框以及调用对话框的代码,收获很多: 1:OnInitDialog函数的 ...
- MFC单文档中,增加,删除 工具栏图标
mfc单文档中,增加,修改,删除 工具栏图标方法: 首先,说明下,在资源视图中,XXX.rc下有个Toolbar,双击打开,如图所示,toolbar中有IDR_MAINFRAME_256和IDR_MA ...
- R学习笔记:文档间函数调用
前言 最近在学习R,学习以后,还要经过输出检验,才算真的学会了. 正文 若是将一个程序的所有内容都放在一个.R文档里,则会显得代码很长,同时不符合面向过程的设计理念,逐层分解,由大至小,代码可读性及逻 ...
- Python视频剪辑AutoCut在文档中合成制作口播视频
这几天试了一下 Python 的 AutoCut ,第一感觉做口播加工的小伙伴们很多人要失业了,结合之前的 Auto-Editor ,直接把口播文案繁重的预处理工作一键搞定,简直爽的不要不要的. 相对 ...
- 北京圣思园张龙Java教学视频学习笔记1
●Path:jdk1.7\bin,是Javac.exe和Java.exe的所在目录,path中越靠前越先找.Classpath,默认是在当前目录找.class文件,如果字节码不在当前目录就设个clas ...
最新文章
- 定位域中长期不活动计算机
- cmw500综合测试仪使用_宁波摆闸静电测试仪价格-老友网
- 这样的阅读工具,人手一个不过分吧?
- ArcEngine对Blob字段赋值的方法
- stm32 定时器初步
- 测试串行回收与堆初始值有关系01
- 搞懂这些SQL优化技巧,面试横着走
- linux下编译的PHP添加soap扩展
- C# 8 的新提案:new 关键字类型推断
- POJ-1260 Pearls DP
- 对象数组根据某属性列的灵活排序
- 基于Matlab----16QAM调制与解调
- Elasticsearch结构化搜索_filter执行原理深度剖析(bitset机制与caching机制)
- mysql对本地文件的读取_MySQL之文件读取
- 让木桶没有短板,FISCO BCOS全面推进并行化改造
- TMC8670 – 集成EtherCAT通讯和FOC伺服运动控制芯片适用2/3相永磁同步电机
- 扬州大学计算机科学与技术怎么样,用实力说话!这3所“低调”的大学,有望成为“双一流”建设高校...
- error: Microsoft Visual C++ 14.0 or greater is required. Get it with “Microsoft C++ Build Tools“:
- 圣诞节礼物送什么有新意?高颜值蓝牙耳机可表心意
- Plotting data
热门文章
- jQuery弹出窗口浏览图片
- linux 子网和广播地址异常
- 20款效果非常棒的 jQuery 插件分享
- java代码生成springdao_请JAVA高手推荐个SSH的后台代码生成工具!!要能生成Spring整合Hibernate的DAO类和Service类!...
- 异步fifo_异步FIFO设计
- copy,mutableCopy,retain区别
- JPG图片EXIF信息提取工具exif
- java typeof_js中typeof的用法汇总
- mysql双数据源动态切换_Spring boot+Mybatis多数据源动态切换
- iis日志php,win2008 iis7开启日志按日期分割