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 ...
随机推荐
- mimikatz-域密码获取神器
mimikatz是一个法国人写的轻量级调试器.出众之处在于其可以直接从 lsass.exe 里猎取windows处于active状态账号明文密码,非常强大. 在网上找了一些相关的文章自己的一点总结吧 ...
- Ubuntu下安装 Phantomjs
1.安装phantomjs —-下载程序文件 wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-1.9.7-linux-x8 ...
- CF 862A Mahmoud and Ehab and the MEX【数组操作】
A. Mahmoud and Ehab and the MEX time limit per test 2 seconds memory limit per test 256 megabytes in ...
- golang笔记:net/smtp
跟go语言的net/smtp斗争了一天,记录下历程. 先用最标准的例子 host := net.JoinHostPort(hostname, port) auth := smtp.PlainAut ...
- 有哪些适合新手练手的Python项目?
http://blog.csdn.net/Lina_ACM/article/details/54581721
- [CTSC2017]最长上升自序列(伪题解)(Dilworth's theorem+网络流)
部分分做法很多,但每想出来一个也就多5-10分.正解还不会,下面是各种部分分做法: Subtask 1:k=1 LCS长度最长为1,也就是说不存在j>i和a[j]>a[i]同时成立.显然就 ...
- 【哈希表】CODEVS1230 元素查找
#include<cstdio> #include<vector> using namespace std; typedef vector<int>::iterat ...
- jQuery的deferred对象详解(转)
jQuery的开发速度很快,几乎每半年一个大版本,每两个月一个小版本. 每个版本都会引入一些新功能.今天我想介绍的,就是从jQuery 1.5.0版本开始引入的一个新功能----deferred对象. ...
- C语言实现中缀表达式转后缀表达式
代码如下: #include <stdio.h> #include <stdlib.h> #include <ctype.h> #define STACK_INIT ...
- Eclipse快速补全快捷键Ctrl+1修改为Android Studio的Alt+Enter
步骤: Window ->Preferences->key-> type filter text 下输入quick fix(这个是快速补全的快捷键)改为Alt+Enter 下面的wh ...