建立CMenu菜单项,实现选中菜单项点击左键响应事件
这里我只是根据自己的项目做了一些总结,实现点击右键弹出菜单项,点左键选择菜单项:
CMenu menu;
VERIFY(menu.CreatePopupMenu());//新建一个cmenu菜单项
menu.AppendMenuW(MF_STRING, , _T("重定义"));
menu.AppendMenuW(, MF_SEPARATOR);//增加一条直线
menu.AppendMenuW(MF_STRING, , _T("修改"));
menu.AppendMenuW(, MF_SEPARATOR);
menu.AppendMenuW(MF_STRING, , _T("删除"));
menu.AppendMenuW(, MF_SEPARATOR);
CPoint pt;//菜单项弹出点
GetCursorPos(&pt);
menu.TrackPopupMenu(TPM_LEFTBUTTON, pt.x, pt.y, this);//在指定位置显示快捷菜单,这里是左键按钮事件
menu.DestroyMenu();//选择后要销毁菜单项
上面的代码建立了一个菜单项,其中包括三个菜单,分别是“重定义”、“修改”、“删除”。
完成了上面的部分,我们只是建立了一个菜单项,这里我们还需要相应我们选择后的事件,我们需要在该对话框下面完成OnCommand(WPARAM wParam, LPARAM lParam)函数,在这里函数里面,所有的命令都会经过这个函数。本项目中,我们的OnCommand(WPARAM wParam, LPARAM lParam)函数为:
BOOL CSdPalette::OnCommand(WPARAM wParam, LPARAM lParam)
{
// TODO: 在此添加专用代码和/或调用基类
UINT uID = (UINT)wParam;//所选择的项的ID
switch (uID)//判断是选择的哪一项
{
case :
acDocManagerPtr()->sendStringToExecute(curDoc(), _T("REDEFINETY\n"), false, true);//选择为重定义
acDocManagerPtr()->sendStringToExecute(curDoc(), _T("UPDATEPALETTE\n"), false, true);
break;
case :
acDocManagerPtr()->sendStringToExecute(curDoc(), _T("ALTERDEFINETY\n"), false, true);//选择为修改
acDocManagerPtr()->sendStringToExecute(curDoc(), _T("UPDATEPALETTE\n"), false, true);
break;
case :
acDocManagerPtr()->sendStringToExecute(curDoc(), _T("DELETETY\n"), false, true);//选择为删除
acDocManagerPtr()->sendStringToExecute(curDoc(), _T("UPDATEPALETTE\n"), false, true);
break;
default:
break;
}
return CZdUiPalette::OnCommand(wParam, lParam);
}
到了这里也是就完成了一个菜单栏的建立和相应过程!这些只是针对本项目来写的,对于CMenu类还有很多种方法来实现建立菜单和相应,后面遇到了会继续完善此笔记。
建立CMenu菜单项,实现选中菜单项点击左键响应事件的更多相关文章
- [MFC] 对话框菜单项Menu选中打勾(单选,多选)
近期需要实现一个功能:MFC对话框中,一项菜单下有五个菜单项,改变菜单项选中状态,每次只能选择其中一个打勾.(单选) 然后在网上搜了下资料,稍微总结下,以防后面用到. 1.单选实现: CMenu* m ...
- menu菜单项和menubutton菜单按钮的结合使用
<!--创建需要显示的菜单按钮(munebutton),menu指定的是菜单项--><a href="javascript:void(0)" id="m ...
- java学习:AWT组件和事件处理的笔记(1)--菜单条,菜单,菜单项
菜单放在菜单条里,菜单项放在菜单里1.MenuBar 在java.awt包中,负责创建菜单条,即MenuBar的一个实例,便是一个菜单条. 在Frame类中的setMenuBar(Menu ...
- Unity 3D编辑器扩展介绍、教程(一) —— 创建菜单项
Unity编辑器扩展教程 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 一 Brief Introduct ...
- jQuery 关于点击菜单项,使子条目“向上”展开效果的实现
为什么做了这样一个的功能呢?原因是前一段时间jQuery群里有个朋友想实现这样一个东东,大家都知道jQuery中有现成的slideDown和slideUp方法,但那是向下展开,而这个是一个完全相反的效 ...
- 【独立开发人员er Cocos2d-x实战 009】Cocos2dx 菜单项CCMenu使用
Cocos2dx中的菜单用CCMenu/Menu类来实现.该类是一个容器.用来装载各种菜单项,用于菜单项能够是图片.系统字体等. 理论就不说了.先上代码: CCMenuItemToggle* item ...
- 实战android菜单项之XML加载菜单与动态菜单项[转]
原文地址:http://blog.csdn.net/kaiwii/article/details/7767225 自定义android应用程序的菜单项首先要知道切入点.经过学习,知道主要是两个Acti ...
- 13、Java菜单条、菜单、菜单项
13.Java菜单条.菜单.菜单项 一般用Java做界面时,都得牵涉到菜单条.菜单.菜单项的设计.菜单项放在菜单里,菜单放在菜单条里,且其字体均可设置. 13.1.菜单条(Menubar) Frame ...
- 在Winform界面菜单中实现动态增加【最近使用的文件】菜单项
在我们一些和文件处理打交道的系统中,我们往往需要记录下最近使用的文件,这样方便用户快速打开之前浏览或者编辑过的文件,这种在很多软件上很常见,本文主要介绍在Winform界面菜单中实现[最近使用的文件] ...
随机推荐
- 图片验证码demo示例
1.首先我们需要一个生成图片验证码图片的一个工具类(下方会有代码示例) 代码如下: package com.util; import java.awt.BasicStroke; import java ...
- 代码托管工具 git
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #454545 } p. ...
- Populating Next Right Pointers in Each Node(I and II)
Given a binary tree struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *nex ...
- JAVA程序员面试宝典
程序员面试之葵花宝典 面向对象的特征有哪些方面 1. 抽象:抽象就是忽略一个主题中与当前目标2. 无关的那些方面,3. 以便更充分地注意与当前目标4. 有关的方面.抽象并不5. 打算了解全部问题 ...
- JVM如何理解Java泛型类
//泛型代码 public class Pair<T>{ private T first=null; private T second=null; public Pair(T fir,T ...
- iframe实现局部刷新和回调(转)
今天做项目遇到一个问题.就是提交表单的时候,要在后台验证用户名是否存在和验证码是否正确. 当验证码或者用户名存在的时候.在后台弹窗提示.可页面原本file里面符合要求的值刷新没了.用户体验不好.因为用 ...
- 【转载】解决nginx负载均衡的session共享问题
https://blog.csdn.net/u012081441/article/details/71787164 之前有写过ubuntu环境下搭建nginx环境,今天来谈一下nginx sessio ...
- c#与webapi交互
public static string HttpConnectToServer(string ServerPage,string strData) { string postData =strDat ...
- Vue--学习过程中遇到的坑
在这里总结一下学习Vue遇到的易错点,持续更新 1.实例化一个Vue对象: 通过new Vue({ el:'#id', data:{ a:'字符串1', b:‘字符串2’ }) 这里的Vue必须大写V ...
- ES入门笔一
ES6一共有6种声明变量的方法 --ES5只有var 和 function --ES6新增了let.const.import和class四种 ES6新增let和const,用来声明变量,是对var的扩 ...