这里我只是根据自己的项目做了一些总结,实现点击右键弹出菜单项,点左键选择菜单项:

    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菜单项,实现选中菜单项点击左键响应事件的更多相关文章

  1. [MFC] 对话框菜单项Menu选中打勾(单选,多选)

    近期需要实现一个功能:MFC对话框中,一项菜单下有五个菜单项,改变菜单项选中状态,每次只能选择其中一个打勾.(单选) 然后在网上搜了下资料,稍微总结下,以防后面用到. 1.单选实现: CMenu* m ...

  2. menu菜单项和menubutton菜单按钮的结合使用

    <!--创建需要显示的菜单按钮(munebutton),menu指定的是菜单项--><a href="javascript:void(0)" id="m ...

  3. java学习:AWT组件和事件处理的笔记(1)--菜单条,菜单,菜单项

    菜单放在菜单条里,菜单项放在菜单里1.MenuBar    在java.awt包中,负责创建菜单条,即MenuBar的一个实例,便是一个菜单条.    在Frame类中的setMenuBar(Menu ...

  4. Unity 3D编辑器扩展介绍、教程(一) —— 创建菜单项

    Unity编辑器扩展教程 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 一 Brief Introduct ...

  5. jQuery 关于点击菜单项,使子条目“向上”展开效果的实现

    为什么做了这样一个的功能呢?原因是前一段时间jQuery群里有个朋友想实现这样一个东东,大家都知道jQuery中有现成的slideDown和slideUp方法,但那是向下展开,而这个是一个完全相反的效 ...

  6. 【独立开发人员er Cocos2d-x实战 009】Cocos2dx 菜单项CCMenu使用

    Cocos2dx中的菜单用CCMenu/Menu类来实现.该类是一个容器.用来装载各种菜单项,用于菜单项能够是图片.系统字体等. 理论就不说了.先上代码: CCMenuItemToggle* item ...

  7. 实战android菜单项之XML加载菜单与动态菜单项[转]

    原文地址:http://blog.csdn.net/kaiwii/article/details/7767225 自定义android应用程序的菜单项首先要知道切入点.经过学习,知道主要是两个Acti ...

  8. 13、Java菜单条、菜单、菜单项

    13.Java菜单条.菜单.菜单项 一般用Java做界面时,都得牵涉到菜单条.菜单.菜单项的设计.菜单项放在菜单里,菜单放在菜单条里,且其字体均可设置. 13.1.菜单条(Menubar) Frame ...

  9. 在Winform界面菜单中实现动态增加【最近使用的文件】菜单项

    在我们一些和文件处理打交道的系统中,我们往往需要记录下最近使用的文件,这样方便用户快速打开之前浏览或者编辑过的文件,这种在很多软件上很常见,本文主要介绍在Winform界面菜单中实现[最近使用的文件] ...

随机推荐

  1. 实现Android Native端爆破源码

    尝试在移动端so侧做一些内存修改,使之走向不通的逻辑,一下为将要爆破的APP源码 JAVA侧: package com.example.grady.sectestone; import android ...

  2. 十六进制颜色转换为iOS可以用的UIColor

    // //  UIColor+Transformation.h //  ContactApp // //  Created by 袁冬冬 on 15/9/11. //  Copyright (c) 2 ...

  3. OpenNMS安装手册

    一. 系统需求Windows Server 2008 R2 SP1 64位JDK 8 update 5 for Windows 64位PostgreSQL 9.3.5 for Windows 64位O ...

  4. intersection of two linked lists.(两个链表交叉的地方)

    Write a program to find the node at which the intersection of two singly linked lists begins. For ex ...

  5. 【抽象那些事】不完整的抽象&多方面抽象&未用的抽象&重复的抽象

    不完整的抽象 抽象未支持所有互补或相关的方法时,将导致这种坏味. 为什么要有完整的抽象? 一种重要的抽象实现手法是创建内聚而完整的抽象.抽象未支持相关的方法时,可能会影响抽象的内聚性和完整性.如果抽象 ...

  6. 中文字体名称对照表(unicode码)及20个web安全字体

    在Web编码中,CSS默认应用的Web字体是有限的,虽然在新版本的CSS3,我们可以通过新增的@font-face属性来引入特殊的浏览器加载字体.但多数情况下,考虑各个因素的影响我们还是在尽量充分利用 ...

  7. C++的拷贝构造函数、operator=运算符重载,深拷贝和浅拷贝、explicit关键字

    原文地址:https://blog.csdn.net/shine_journey/article/details/53081523 1.在C++编码过程中,类的创建十分频繁. 简单的功能,当然不用考虑 ...

  8. 鼠标拖拽定位和DOM各种尺寸详解

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. 从 <sofa:XXX> 标签开始看 SOFA-Boot 如何融入 Spring

    前言 SOFA-Boot 现阶段支持 XML 的方式在 Spring 中定义 Bean,通过这些标签,我们就能从 Spring 容器中取出 RPC 中的引用,并进行调用,那么他是如何处理这些自定义标签 ...

  10. 用ASP.NET Core 2.0 建立规范的 REST API -- 预备知识 (2) + 准备项目

    上一部分预备知识在这 http://www.cnblogs.com/cgzl/p/9010978.html 如果您对ASP.NET Core很了解的话,可以不看本文, 本文基本都是官方文档的内容. A ...