【MFC】VS2013 动态创建快捷菜单(右键菜单)
参考 http://blog.csdn.net/csdnzhwk/article/details/47395639
参考 http://blog.csdn.net/jiadabin/article/details/22686161
1、创建一个基于对话框的项目
2、在资源头文件(Resource.h),定义命令ID:
#define ID_MENUCAT 1109
#define ID_MENUDOG 1110
#define ID_MENUMONKEY 1111 #define _APS_NEXT_CONTROL_VALUE 1112
3、在需要弹出快捷菜单的地方创建菜单(ParticipateMeeting.cpp)
CMenu menu;
menu.CreatePopupMenu(); //创建一个弹出菜单
menu.AppendMenu(MF_BYCOMMAND | MF_STRING, ID_MENUCAT, _T("猫")); //添加子菜单项
menu.AppendMenu(MF_SEPARATOR); //分隔线
menu.AppendMenu(MF_BYCOMMAND | MF_STRING, ID_MENUDOG, _T("狗"));
menu.AppendMenu(MF_BYCOMMAND | MF_STRING, ID_MENUMONKEY, _T("猴")); CPoint pt;
GetCursorPos(&pt);
menu.TrackPopupMenu(TPM_LEFTALIGN, pt.x, pt.y, this);
4、在对话框的头文件(ParticipateMeeting.h)中声明菜单的消息处理函数
afx_msg void OnMenuCat();
afx_msg void OnMenuDog();
afx_msg void OnMenuMonkey();
5、在对话框的源文件(ParticipateMeeting.cpp)中添加消息映射宏,将命令ID关联到消息处理函数中:
ON_COMMAND(ID_MENUCAT, OnMenuCat)
ON_COMMAND(ID_MENUDOG, OnMenuDog)
ON_COMMAND(ID_MENUMONKEY, OnMenuMonkey)
6、在对话框源文件(ParticipateMeeting.cpp)中添加消息处理函数的实现代码:
void ParticipateMeeting::OnMenuCat()
{
MessageBox(_T("猫菜单被按下!"));
}
void ParticipateMeeting::OnMenuDog()
{
MessageBox(_T("狗菜单被按下!"));
}
void ParticipateMeeting::OnMenuMonkey()
{
MessageBox(_T("猴菜单被按下!"));
}
【MFC】VS2013 动态创建快捷菜单(右键菜单)的更多相关文章
- 自定义右键菜单,禁用浏览器自带的右键菜单[右键菜单实现--Demo]
许多从事Web开发的会发现有些事,我们需要禁用浏览器本事自带的右键菜单,而实现自定义的右键菜单下面我们也来实现一个自定义的右键菜单 首先来创建JSP页面 <%@ page language=&q ...
- MFC之动态创建按钮
打开VS 创建MFC基于对话框的工程,在对话框初始化方法中动态创建一个按钮实例: 1> CButton *pMyButton = new CButton();CEdit *pMyEdit = n ...
- 【MFC】动态创建CMFCToolbar图标不显示问题
最近遇到一个问题,需要动态的从xml文件读取一系列图标文件,加载到一个toolbar中,由于使用的是vs2008 with sp1 feature pack,自然想到用CMFCToolbar来做,思路 ...
- <Win32_16>来看看标准菜单和右键菜单的玩法
日常应用中,菜单主要分为两种:(1) 标准菜单(处于应用程序菜单栏处的菜单) (2)右键快捷菜单 几乎你所见过或使用过的软件中,都有它俩儿 为应用程序添加它们的基本步骤: (1)用代码或者IDE ...
- 几款jQuery右键菜单插件介绍
在网页中使用自定义右键菜单,实现上皆为使用javascript禁用浏览器默认的右键菜单,然后在网页中响应鼠标右键事件,弹出自定义的菜单. 类似右键菜单的组件网上很多.一般而言,改变浏览器的默认菜单应当 ...
- jQuery自定义Web页面鼠标右键菜单
jQuery自定义Web页面鼠标右键菜单 右键菜单是固定的,很多时候,我们需要自定义web页面自定义菜单,指定相应的功能. 自定义的原理是:jQuery封装了鼠标右键的点击事件(“contextmen ...
- Extjs2.0 desktop 动态创建桌面图标和开始菜单
这几天一直纠结Extjs desktop怎么动态读取数据,用Ext.net已经实现但是不灵活.Ext.net做出来的桌面在窗口关闭后只是隐藏该窗口,并没有释放,对于我这种js菜鸟来说,改那一坨代码要人 ...
- 右键菜单添加包含ICON图片的快捷打开方式
右键菜单添加包含ICON图片的快捷打开方式: ①保存如下代码为“submit.reg”, ②修改对应的程序地址 ③双击创建的文件,导入到注册表中,即可 Windows Registry Editor ...
- DevExpress使用教程:XtraGridControl动态添加右键菜单
在使用 GridControl 的时候经常需要添加右键菜单.一般的做法是自己创建菜单项,然后注册GridView的Mouse-Click事件,然后Show出定义好的菜单.但是涉及到一些单击事件会收到编 ...
随机推荐
- iOS开发之WIFI,3G/4G两种网络同时使用技巧
最近遇到一个比较奇葩的需求:App与硬件通过WiFi LAN通信, 同时App需要与服务器通过3G/4G WAN通信,如下图: 众所周知,手机同时打开WiFi和3G时候,会优先走WiFi.这个该如何实 ...
- 基于matlab的蓝色车牌定位与识别---分割
接着上面的工作,接下去就该是进行字符分割了.考虑到为了后面的字符识别,因此在这部分需要实现的目标是需要把车牌的边框全部切除,对重新定位的车牌进行垂直方向水平方向调整,保证字符是正的.最后才是字符的分割 ...
- Python学习笔记5(函数)
[摘要]本文详细介绍python中的函数,以及与之相关的参数和作用域的概念,并介绍递归的概念以及在程序中的应用. 函数定义 定义函数要用函数定义语句def.如下: def hello(name): r ...
- c++结构体双关键字排序
#include<bits/stdc++.h> using namespace std; struct node{ int l,r; }num[]; int w_comp(const no ...
- k8s基于canel的网络策略
Kubernetes能够把集群中不同Node节点上的Pod连接起来,并且默认情况下,每个Pod之间是可以相互访问的.但在某些场景中,不同的Pod不应该互通,这个时候就需要进行访问控制.亲测:在kube ...
- Python 建模步骤
#%% #载入数据 .查看相关信息 import pandas as pd import numpy as np from sklearn.preprocessing import LabelEnco ...
- python之序列化
什么叫序列化? 序列化是指把内存里的数据类型转变成字符串,以使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接受bytes. 把字符转换成内存数据类型,叫反序列化. 为什么要序列化? 你 ...
- Divisibility by 25 CodeForces - 988E
You are given an integer nn from 11 to 10181018 without leading zeroes. In one move you can swap any ...
- 浅谈内核的Makefile、Kconfig和.config文件
Linux内核源码文件繁多,搞不清Makefile.Kconfig..config间的关系,不了解内核编译体系,编译修改内核有问题无从下手,自己写的驱动不知道怎么编进内核,不知道怎么配置内核,这些问题 ...
- golang导出excel(excel格式)
之前写过一篇导出cvs格式的,如果只是简单导出完全能满足需要.按时如果想要有复杂需求,如样式定制.多个sheet之类的,就无法完成了.之后发现有人已经实现golang直接excel对excel的操作, ...