建立CMenu菜单项,实现选中菜单项点击左键响应事件

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

    CMenu menu;
    VERIFY(menu.CreatePopupMenu());//新建一个cmenu菜单项
    menu.AppendMenuW(MF_STRING, 10001, _T("重定义"));
    menu.AppendMenuW(0, MF_SEPARATOR);//增加一条直线
    menu.AppendMenuW(MF_STRING, 10002, _T("修改"));
    menu.AppendMenuW(0, MF_SEPARATOR);
    menu.AppendMenuW(MF_STRING, 10003, _T("删除"));
    menu.AppendMenuW(0, 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 10001:
        acDocManagerPtr()->sendStringToExecute(curDoc(), _T("REDEFINETY\n"), false, true);//选择为重定义
        acDocManagerPtr()->sendStringToExecute(curDoc(), _T("UPDATEPALETTE\n"), false, true);
        break;
    case 10002:
        acDocManagerPtr()->sendStringToExecute(curDoc(), _T("ALTERDEFINETY\n"), false, true);//选择为修改
        acDocManagerPtr()->sendStringToExecute(curDoc(), _T("UPDATEPALETTE\n"), false, true);
        break;
    case 10003:
        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类还有很多种方法来实现建立菜单和相应,后面遇到了会继续完善此笔记。

时间: 2024-10-21 17:19:31

建立CMenu菜单项,实现选中菜单项点击左键响应事件的相关文章

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

菜单放在菜单条里,菜单项放在菜单里1.MenuBar    在java.awt包中,负责创建菜单条,即MenuBar的一个实例,便是一个菜单条.    在Frame类中的setMenuBar(MenuBar bar)方法,可把菜单条添加到窗口的顶端,但只能向窗口中添加一个菜单条2.Menu    在java.awt包中,负责创建菜单,即Menu的一个实例,便是一个菜单.    Meun类的方法如下:            Menu()   建立一个空标题的菜单            Menu(S

QtCreator插件开发(二)——QtCreator菜单和菜单项

QtCreator插件开发(二)--QtCreator菜单和菜单项 一.QtCreator菜单栏简介 1.QtCreator菜单简介 QtCreator菜单栏如下:QtCreator默认菜单包括"文件"."编辑"."工具"."窗体"."帮助"."构建"."调试"."分析"由插件提供,不是QtCreator的默认菜单.在"帮助"菜

cocos2d-js cc.MenuItem创建菜单项?

cc.MenuItem.create(callback, target) 创建一个空的菜单项,参数说明: callback  回调函数,用于响应菜单 target  标记项 ctor(callback, target) 构造函数 initWithCallback(callback, target) 初始化一个带回调的菜单项 返回 boolean isEnabled() 返回菜单是否有效 返回 boolean isOpacityModifyRGB() setOpacityModifyRGB(val

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

Cocos2dx中的菜单用CCMenu/Menu类来实现,该类是一个容器,用来装载各种菜单项,用于菜单项可以是图片.系统字体等. 理论就不说了,先上代码: CCMenuItemToggle* item1 = CCMenuItemToggle::createWithTarget(this, menu_selector(HelloWorld::menuItemToggle), CCMenuItemFont::create("on1"), CCMenuItemFont::create(&qu

删除桌面右键菜单中无用的菜单项

删除桌面右键菜单中无用的菜单项:使用regedit打开注册表,然后打开HKEY_CLASSES_ROOT\Directory\Background\shell键项,在其中找到你想要删除的菜单,删除即可. 其他右键菜单项的删除:http://jingyan.baidu.com/article/86112f13342b64273797879c.html 电脑左下角:开始——运行“打开”框中键入“regedit”步骤/方法一: 开始——运行里面输入: regsvr32 /u igfxpph.dll 确

001在系统菜单中添加菜单项

技术要点: 为了操作系统菜单,先要获取系统菜单指针,可以通过GetSystemMenu函数实现,然后利用菜单指针添加一个菜单项,最后在对话框OnSysCommand方法中处理菜单项的命令. GetSystemMenu方法用于获取一个系统菜单的指针,语法如下: CMenu* GetSystemMenu(BOOL bRect); bRect:FALSE时,该方法返回当前正在使用的系统菜单:TRUE时,该方法将重新设置系统菜单到默认状态,并且方法返回值不可用. 实现过程: (1)新建一个基于对话框的应

centos 7 在应用菜单中添加菜单项

gnome桌面的所有菜单项都存储如下位置: /usr/share/applications/ 新建一个菜单项,直接在该目录下新建一个后缀名为.desktop的文件即可. $ vi /usr/share/applications/newitem.desktop 文件内容如下: [Desktop Entry]Version=1.0Name=My ProgramIcon=/some/pathExec=/home/danny/some/path/myprog/progTerminal=falseType

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

在我们一些和文件处理打交道的系统中,我们往往需要记录下最近使用的文件,这样方便用户快速打开之前浏览或者编辑过的文件,这种在很多软件上很常见,本文主要介绍在Winform界面菜单中实现[最近使用的文件]动态菜单的处理,实现一个较为常用的功能. 在我上篇随笔<文字处理控件TX Text Control的使用>介绍的内容中,我针对性的对这个控件的使用做了一个全面的了解,发现其中案例代码总这部分的功能实现[最近使用的文件]挺好,于是把它进行了整理,把整个思路作为一篇随笔进行记录,希望对大家有所帮助.

JCEF 如何修改右键菜单项(JCEF在右键菜单中添加开发者选项-show dev tools)

需求: 在界面的右键事件中添加一个打开开发者选项的菜单(Show Dev Tools) 所以我们可以看到的是在界面上右键,会有默认的一些菜单项(前进,后退,打印,查看源码),而这些功能并不一定是我们需要的,所以我们首先要做的就是去除这些选项,参考:java cef3 如何禁止右键菜单项 同理,我们只需要在CefContextMenuHandler接口的实现类中去定制我们的菜单项即可,代码如下: public class ContextMenuHandler implements CefConte