Win32建立右键弹出菜单(PopMenu)
自定义右键菜单:
#ifndef _CONTEXTMENU_H_
#define _CONTEXTMENU_H_
#include <windows.h> //动态菜单
#define ITEM_MENU_REPLY 40001
#define ITEM_MENU_ALLREPLAY 40002
#define ITEM_MENU_RELAY 40003
#define ITEM_MENU_DELETE 40004
#define ITEM_MENU_FINALDELETE 40005
#define ITEM_MEUN_MARK 40006
#define ITEM_SUBMENU_UNSEEN 40007
#define ITEM_SUBMENU_SEEN 40008 class CContextPopMenu
{
public:
CContextPopMenu();
~CContextPopMenu(); void PopMenu(HWND hwnd,int nX,int nY );
void PopMenu(HWND hwnd,const POINT& pt); void EnableMenu(int nItem,bool nEnable);
private:
HMENU m_pPopMenu;
};
#endif
#include "ContextMenu.h" CContextPopMenu::CContextPopMenu()
{
m_pPopMenu = CreatePopupMenu();
if (m_pPopMenu)
{
HMENU Submenu = ::CreatePopupMenu();
::InsertMenu(m_pPopMenu,(-),MF_BYPOSITION,ITEM_MENU_REPLY,TEXT("回复"));
::InsertMenu(m_pPopMenu,(-),MF_BYPOSITION,ITEM_MENU_ALLREPLAY,TEXT("全部回复"));
::InsertMenu(m_pPopMenu,(-),MF_BYPOSITION,ITEM_MENU_RELAY,TEXT("转发"));
::InsertMenu(m_pPopMenu,(-),MF_BYPOSITION,ITEM_MENU_DELETE,TEXT("删除"));
::InsertMenu(m_pPopMenu,(-),MF_BYPOSITION,ITEM_MENU_FINALDELETE,TEXT("彻底删除"));
::InsertMenu(m_pPopMenu,(-),MF_BYPOSITION|MF_POPUP,(unsigned int)Submenu,TEXT("标记"));
::InsertMenu(Submenu,(-),MF_BYPOSITION|MF_POPUP,ITEM_SUBMENU_UNSEEN,TEXT("未读邮件"));
::InsertMenu(Submenu,(-),MF_BYPOSITION|MF_POPUP,ITEM_SUBMENU_SEEN,TEXT("已读邮件"));
}
} CContextPopMenu::~CContextPopMenu()
{
if (m_pPopMenu)
{
DestroyMenu(m_pPopMenu);
m_pPopMenu = NULL;
}
} void CContextPopMenu::PopMenu(HWND hwnd,int nX,int nY )
{
if (m_pPopMenu && hwnd)
{
TrackPopupMenu(m_pPopMenu,TPM_LEFTALIGN|TPM_RIGHTBUTTON,nX,nY,,hwnd,NULL)
}
} void CContextPopMenu::PopMenu(HWND hwnd,const POINT& pt)
{
PopMenu(hwnd,pt.x,pt.y);
}
然后在WndProc回调函数,响应WM_RBUTTONUP函数时创建
case WM_RBUTTONUP:
POINT pt;
::GetCursorPos(&pt);
CContextPopMenu* pPopMenu = new CContextPopMenu;
pPopMenu->PopMenu(hwnd,pt);
break;
对每个菜单项的响应在WM_COMMAND消息里处理
case WM_COMMAND:
switch(LOWORD(wParam))
{
case ITEM_MENU_REPLY:
MessageBox(NULL,TEXT("响应回复菜单项"),TEXT("提示"),MB_OK);
break;;
case ITEM_SUBMENU_UNSEEN:
MessageBox(NULL,TEXT("响应标记子菜单项"),TEXT("提示"),MB_OK);
break;
}
借鉴他人代码:http://blog.csdn.net/bizhu12/article/details/6664210
Win32建立右键弹出菜单(PopMenu)的更多相关文章
- win32进阶之路:程序托盘图标+右键弹出菜单
开场白 本次介绍两个非常棒且实用的技巧:程序托盘图标和右键弹出菜单,效果如下图. 程序托盘图标用了迅雷的图标,右键点击时候会弹出三个选项的菜单. 程序托盘图标设置 我会用尽可能清晰明了的步骤介绍方式 ...
- vc++ 如何添加右键弹出菜单
一.创建新工程 二.编辑菜单资源 1.添加菜单 按"Ctrl+R",双击"Menu"图标 2.于菜单编辑器内编辑菜单 四.添加代码(红色部分) void CCM ...
- DirectUI界面编程(六)实现右键弹出菜单
本节向大家介绍一下右键弹出菜单是如何实现的.效果如下,在窗口中点击鼠标右键弹出菜单,点击菜单项能够响应菜单点击事件. 使用Duilib库实现的弹出菜单,实际上也是一个Windows窗口,因此我们需要创 ...
- Vue2的右键弹出菜单(vue-contextmenu)
给大家推荐一个基于Vue2的右键弹出菜单插件,支持单一SPA页面以及可以在循环绑定中使用. 项目地址为:https://github.com/chIIC/vue-...demo1: 父组件绑定右键事件 ...
- 关于MFC主菜单和右键弹出菜单
一.主菜单.弹出菜单和右键菜单的概念: 主菜单是窗口顶部的菜单,一个窗口或对话框只能有一个主菜单,但是主菜单可以被更改(SetMenu()更改): 创建方式:CMenu::CreateMenu(voi ...
- SWT中的Tree中 添加右键弹出菜单
先看一下效果: 如图:在树上单击鼠标右键会弹出 弹出式菜单.做法其实很简单,先做一个树: final TreeViewer treeViewer = new TreeViewer(group, SWT ...
- win32 右键弹出菜单
#define CW_ABOUT 100 #define CW_DOCUMENT 200 POINT t; GetCursorPos(&t); HMENU hMenu,hPopupMen ...
- js+css实现带缓冲效果右键弹出菜单
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- QT 右键弹出菜单
QWidget及其子类都可有右键菜单 1.设置标志 在widget初始化的时候 setContextMenuPolicy(Qt::CustomContextMenu); 设置为自定义菜单模式 2.在需 ...
随机推荐
- Spring-事务管理(Transaction)
1.事务介绍 事务(Transaction):访问并能更新数据库中数据项的一个程序执行单元. 事务是一系列的动作,它们综合在一起才是一个完整的工作单元,这些动作必须要么全部完成,要么什么都不做,如果有 ...
- dedecms批量导出新增文章url和标题
百度站长工具推出主动提交功能有一段时间了,可以将新产出链接立即通过此方式推送给百度,以保证新链接可以及时被百度收录.那么dedecms如何批量导出新增文章url呢?你可以用标签调用最新文章,可以用sq ...
- github中的一个快捷键
在github中,快捷键t的作用是对项目的内容进行查找.在项目目录中按下t键,会进入下面这个界面, 在first-program(这是我自己的项目名)这个项目名后,输入你要查找的内容,即可找到项目中所 ...
- 给JSON中put的value=null时,这对key=value会被隐藏掉。
当我们在JSON里像这样json.put("key",null);put值进去的话,这个键值对就会被隐藏掉例如下面的例子: <pre name="code" ...
- idea 使用方法
1:设置自定义自动补全,使用$END$代表最后光标所在的位置. http://blog.csdn.net/u012569796/article/details/54694418 2:使用 shift+ ...
- (转)Elasticsearch查询规则------match和term
es种有两种查询模式,一种是像传递URL参数一样去传递查询语句,被称为简单搜索或查询字符串(query string)搜索,比如 GET /megacorp/employee/_search //查询 ...
- sdut2613(This is an A+B Problem)大数加法(乘法)
#include <iostream>#include <stdio.h>#include <string.h>#include <stdlib.h>u ...
- [LeetCode] 310. Minimum Height Trees_Medium tag: BFS
For a undirected graph with tree characteristics, we can choose any node as the root. The result gra ...
- 在Keras模型中one-hot编码,Embedding层,使用预训练的词向量/处理图片
最近看了吴恩达老师的深度学习课程,又看了python深度学习这本书,对深度学习有了大概的了解,但是在实战的时候, 还是会有一些细枝末节没有完全弄懂,这篇文章就用来总结一下用keras实现深度学习算法的 ...
- Air Jordan 1 Los Primeros Will be unveiled
This new pair of Air Jordan 1 Los Primeros is part of the popular Air-Jordan- Line signature and is ...