Visual studio C++ MFC之Menu editor
背景
本篇旨在MSDN帮助文档下总结Menu editor的使用,并列出碰到的具体问题。
正文
创建Menu Editor
打开链接MSDN之Creating a Menu。按照文档的方法创建Menu Editor,最后点击编译,你会发现你添加的Menu资源文件并没有按照预想显示在你的窗口里。这是因为我们还少了一个步骤,此步骤在该文档里没有提及,也许在另一个我不清楚的文档里。回到正题,添加的Menu没有显示在你创建的窗口里,是因为没有建立Menu与Dialog的链接,建立连接的办法既是,先记住创建的Menu的ID号,接着点开Dialog的属性框,找到属性menu,在该栏选择新建的Menu资源ID,则编译后就会发现Menu出现在了对应的窗口了。创建Menu下的Item的命令(Command)
譬如说,Menu有个名为file的Item,点击file要能实现打开文件的操作。具体实现办法既是,在该Item右击添加事件处理程序,消息类型有COMMAND和Update_Command_UI,前者是处理该菜单栏处理的实际内容,后者用改变UI显示。类列表就很好理解,该Menu在哪个窗口内则选择哪个窗口的类。创建完成后即会产生对应的一下两个函数:
void CMenueditortestDlg::OnFileExit()
{
// TODO: 在此添加命令处理程序代码
TRACE("Menudlg\n");
}
void CMenueditortestDlg::OnUpdateFileExit(CCmdUI *pCmdUI)
{
// TODO: 在此添加命令更新用户界面处理程序代码
// 注意此处的 pCmdUI这个指针。里面可以直接对对应的菜单UI进行操作。具体如何操作还有待研究。
TRACE("Updatedlg\n");
}
- 动态改变
Menu的文字
点击Menu的某个Item,希望其文本会随之改变,例如Item文本Connect,点击之后,让其改变为Disconnect。具体做法就是,如2 步骤生成一个消息类型为Update_Command_UI的函数,接着在该函数内实现改变Menu中某个Item的文字,具体代码如下:
void CMenueditortestDlg::OnUpdateSettingsDrawenable(CCmdUI *pCmdUI)
{
// TODO: 在此添加命令更新用户界面处理程序代码
CMenu *cMenu; // CMenu类
cMenu = this->GetMenu(); // 获得本窗口类的Menu指针(该步骤很重要)
/*
BOOL WINAPI ModifyMenu(
_In_ UINT uPosition,
_In_ UINT uFlags,
_In_ UINT_PTR uIDNewItem,
_In_opt_ LPCTSTR lpNewItem
);
*/
/*
此函数第一个参数根据第二个参数来变化。当第二个参数含有 MF_BYPOSITION 时,则第一个参数代表的是菜单的位置。菜单栏从左至右,0为起始值。当第二个参数为 MF_BYCOMMAND时,则第一参数代表的要改变的Menu的具体Item的ID号。其他参数参考MSDN,在参考链接会给出。
*/
cMenu->ModifyMenuW(ID_SETTINGS_DRAWENABLE, MF_BYCOMMAND | MF_CHECKED | MF_STRING,
ID_SETTINGS_DRAWENABLE,_T("Draw Disable"));
DrawMenuBar(); // MSDN指出,调用ModifyMenuW(...)函数后,一定要调用DrawMenuBar()函数。
}
参考链接
- MSDN之Menu Editor;
- MSDN关于Menus的所有类成员;
- Menu类中的成员函数GetMenu(...);
- Menu类中的成员函数ModifyMenu(...);
至此记录完毕。
记录时间:2017-2-13
记录地点:深圳WZ
Visual studio C++ MFC之Menu editor的更多相关文章
- Visual studio C++ MFC之点击按钮(菜单栏)生成新窗口
背景 当前做的APP有菜单栏,菜单栏有一项需要对下位机相关参数进行设置,则必须弹出一个窗口来实现设置操作.本篇即对点击菜单栏生成新的窗口,在新的窗口内完成相应计划后结束新窗口并返回原窗口的方法进行简述 ...
- Visual Studio C++ MFC界面常用参数更改(改变图标,添加控件,调试打印函数等等)
背景 需要使用Visual Studio C++做一些界面.此篇文章既是记录Visual Studio C++在调整界面时常常遇见的问题. 正文 一.如何更改窗体图标,以及生成的.exe图标 更改窗体 ...
- Visual studio C++ MFC的库函数末尾添加“A”和“W”的意义
背景 在使用Visual studio C++ MFC库函数ModifyMenu(...)函数,在Visual studio自动代码补全里提示没有ModifyMenu(...)这个函数,倒是有Modi ...
- Visual Studio 安装 MFC
**Visual Studio 安装 MFC 库** 打开 Visual Studio Installer //程序 选择对应的版本 (本人 VS2022)->修改 [点击]单个组件 ...
- Visual Studio 2015 MFC之Button颜色变化-断点调试(Debug)
软件开发,对自己的程序进行调试很重要,本次文章在上一边随笔的基础上,介绍一下Button控件做显示灯的用法,Button控件的添加和变量设置等可以参考下面的的链接:Visaul Studio 2015 ...
- Visual studio C++ MFC之列表控件CListCtrl Control
背景 本篇旨在MSDN帮助文档下总结列表控件CListCtrl Control的使用,并列出碰到的具体问题. 正文 列表型控件List Control的类是ClistCtrl,具体成员对象详见链接,以 ...
- Visual studio C++ MFC之树形控件Tree Control
背景 本篇旨在MSDN帮助文档下总结树形控件Tree Control的使用,并列出碰到的具体问题. 正文 树形控件Tree Control的类则是CTreeCtrl,具体成员对象详见链接,以下则描述一 ...
- 【Visual Studio】MFC编辑框自动换行,垂直滚动条自动下移(转)
原文转自 http://blog.csdn.net/wu_lai_314/article/details/8317395 1.新建一个编辑框控件(Edit Control),将其多行(Multilin ...
- How to: Run Tests from Microsoft Visual Studio
https://msdn.microsoft.com/en-us/library/ms182470.aspx Running Automated Tests in Visual Studio Visu ...
随机推荐
- Workman websocket 握手连接
默认的是TCP连接方式,如果需要WebSocket,则需要更改Gateway方式, 服务端协议要和客户端协议一致才能通讯.客户端是websocket协议,服务端也要设置成websocket协议.默认为 ...
- MYSQL的内外连接
1.内联接(典型的联接运算,使用像 = 或 <> 之类的比较运算符).包括相等联接和自然联接. 内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行.例如,检索 stude ...
- php+mysql折线图
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...
- [centos6.5] 把xampp的htdocs改为其他目录
vim /opt/lampp/etc/httpd.conf DocumentRoot "/opt/lampp/htdocs" 改为 DocumentRoot "/var/ ...
- 【xunsearch】笔记
1.添加索引 $ cd /usr/local/xunsearch/sdk/php/ $ util/Indexer.php --rebuild --source=mysql://数据库用户名:数据库密码 ...
- CF981C Useful Decomposition【树/思维】
[链接]:CF [题意]:给定一棵树,要求拆成若干条简单路径,并且这些路径都经过一个公共节点.给出任意一个解决方案,如不存在输出No. [分析]: 因为是一棵树, 所以如果要求任意两条路线至少有一个公 ...
- 使用scrapy爬取金庸小说目录和章节url
刚接触使用scrapy的时候,如果一开始就想实现特别复杂的配置,显然是不太现实的,用一些小的例子可以帮助自己理解各个模块. 今天的目标:爬取http://www.luoxia.com/shendiao ...
- 【线段树】Codeforces Round #393 (Div. 1) C. Nikita and stack
就是给你一些元素的进栈 出栈操作,不按给定的顺序,要求你对于每次输入,都依据其及其之前的输入,判断出栈顶的元素是谁. 用线段树维护,每次push,将其位置的值+1,pop,将其位置的值-1.相当于寻找 ...
- 【状压DP】poj2686 Traveling by Stagecoach
状压DP裸题,将({当前车票集合},当前顶点)这样一个二元组当成状态,然后 边权/马匹 当成边长,跑最短路或者DAG上的DP即可. #include<cstdio> #include< ...
- Scala实战高手****第10课:Scala继承彻底实战和Spark源码鉴赏
isInstanceOf 和 asInstanceOf is用于判断 as用于转换,把父类类型转换成子类类型 getClass 具体找出类型