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 ...
随机推荐
- C#汉字转十六进制
public class chsHex{/// <summary>/// 从汉字转换到16进制/// </summary>/// <param name="s& ...
- 从sizeof(string)到引用计数的漫游
前言: 说是漫游,其实就是扯,一点一点的扯. 话说之前参加华为的德州扑克比赛,我用C++解析消息的时候碰到一个小问题,就是定长收消息的时候出错,在Linux下调了很久很久,终于发现,sizeof(st ...
- C# 用程序读写另一个控制台程序
一. using System; namespace ConsoleApp1 { class Program { static void Main(string[] args) { Console.W ...
- (10)python 特殊方法
一.构造方法 在类中定义构造函数 >>> class a: def __init__(self): self.age=42 >>> f=a() >>&g ...
- codeforces734E
题目连接:http://codeforces.com/contest/734/problem/E E. Anton and Tree time limit per test 3 seconds mem ...
- 2017中国大学生程序设计竞赛 - 女生专场B【DP】
B HDU - 6024 [题意]:n个教室,选一些教室建造糖果商店. 每个教室,有一个坐标xi和在这个教室建造糖果商店的花费ci. 对于每一个教室,如果这个教室建造糖果商店,花费就是ci,否则就是与 ...
- Problem A: 英雄无敌3(1)【dp/待补】
Problem A: 英雄无敌3(1) Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 86 Solved: 16[Submit][Status][ ...
- Android学习--广播机制
广播机制简介 Android的广播可以分为两种类型的,标准广播和有序的广播: 标准广播: 是一种完全异步执行的广播,在广播发出去之后,所有的广播接收器几乎是同一时接收到这条广播. 有序广播: 是一 ...
- 10、Flask实战第10天:视图使用装饰器
在实际开发中,我们有时候会用到自己定义装饰器并应用到函数视图或者类视图里面:比如:我们要想进入个人中心页面,首先要验证你是否登录,否则进不去,下面我们来模拟这个场景 定义一个装饰器 from func ...
- 千克与磅之间的转换 Exercise05_05
/** * @author 冰樱梦 * 时间:2018年下半年 * 题目:千克与磅之间的转换 * */ public class Exercise05_05 { public static void ...