【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("猴菜单被按下!"));
}
时间: 2024-10-13 06:30:05

【MFC】VS2013 动态创建快捷菜单(右键菜单)的相关文章

自定义右键菜单,禁用浏览器自带的右键菜单[右键菜单实现--Demo]

许多从事Web开发的会发现有些事,我们需要禁用浏览器本事自带的右键菜单,而实现自定义的右键菜单下面我们也来实现一个自定义的右键菜单 首先来创建JSP页面 1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> 2 <html> 3 <head> 4 <title>右键菜单</title> 5 <s

swing 菜单+右键菜单+二级菜单实现

闲话少说直接代码,这里主要用到JMenuBar JMenu,JMenuItem ,JPopupMenu(右键菜单),看文档(javax.swing下)就能轻松学会,界面写的有点乱,但是基本用到了这三个类 import javax.swing.* ; import java.awt.event.* ; class MyMenu { JFrame frame = new JFrame("右键菜单") ; JMenuItem item1 = new JMenuItem("子菜单1&

MFC之动态创建按钮

打开VS 创建MFC基于对话框的工程,在对话框初始化方法中动态创建一个按钮实例: 1> CButton *pMyButton = new CButton(); 2>pMyButton->Create(_T("ButtonName"),WS_CHILD|WS_VIVIBLE_BS_PUSHBUTTON,CRect(10,20,80,80),this,IDC_MYBUTTON); 编译时会提示IDC_MYBUTTON未定义,此时打开资源文件找到stringTable,在里

jQuery动态创建二级下拉菜单

创建网站的时候常常需要用到下拉菜单,每次都要自己写,总觉得太麻烦了,于是就写了一个动态生成下拉菜单的函数,并为其添加了相应的功能样式和视觉样式.在使用的时候,只需要定义好各级菜单的内容以及首级菜单的链接并调用dropMenu函数就可以使用了,如果需要,还可以自己添加一些富有特色的视觉样式. 1. 在HTML中添加如下代码: 1 <nav class="drop_menu"> 2 <ul></ul> 3 </nav> 并引入相应的css和j

创建自定义的右键菜单

1.当前的控件的Rect 2.当前事件是鼠标按下事件,并且是按下的鼠标右键 3.右键点击位置在Rect内 1 void MyContexMenu(Rect rect) 2 { 3 if(Event.current.type == EventType.MouseDown && 4 Event.current.button == 1 && 5 rect.Contains(Event.current.mousePosition)) 6 { 7 GenericMenu menu =

在ListCtrl上添加右键菜单,并创建响应函数。

一:添加右键菜单(在选中的行上面添加右键响应菜单) 1.首先创建一个菜单资源,在该项目上右键,添加资源,菜单资源,新建一个菜单资源(不会显示顶级菜单,只显示次级菜单). 2.在自己新添加的类CMyListCtrl(该类继承自CListCtrl,并且该类类型的对象与ListCtrl资源进行了绑定),并在该类的消息中添加=NM_RCLICK消息,在它的消息处理函数中, 添加右键弹出菜单代码: CMenu menu; menu.LoadMenuW(IDR_MENU1); //加载菜单资源 CMenu*

[Google Map]创建右键菜单

CSS样式: .contextMenu { position: absolute; min-width: 100px; z-index: 1000; background: #fff; border-top: solid 1px #CCC; border-left: solid 1px #CCC; border-bottom: solid 1px #676767; border-right: solid 1px #676767; padding: 0px; margin: 0px; displa

[Baidu Map]创建右键菜单

关键代码: addMenu: function (menuItem) { /// <summary> /// 给地图添加右键菜单 /// eg: ///var menuItem = [ /// { /// text:'放大', /// callback:function(){window.bmap.zoomIn()} /// }, /// { /// text:'缩小', /// callback:function(){window.bmap.zoomOut()} /// } /// ]; /

Delphi动态创建菜单

在程序运行中动态创建菜单,主要使用TMeunItem类,所有菜单的条目都是TMenuItem的一个实例. 打开Delphi7集成开发环境,在默认新建工程里,放置一个Button1按钮和MainMenu1菜单项,设置Button1的Caption属性为添加主菜单. 在Button1的Object Inspector选项卡设置Button1的OnClick响应事件,代码如下: procedure TForm1.Button1Click(Sender: TObject); var files,edit