分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

在Visual Studio 2008SP1中,要弹出上下文关联菜单的话,只需要在应用程序初始化的时候调用CWinAppEx::InitContextMenuManager,然后使用CWinAppEx::GetContextMenuManager获得一个指向应用程序的上下文管理器。
如果工程是单文档/多文档的话,可能会自动关联一个右键菜单,可以在应用程序的实现文件看到类似如下代码:

// CXXXApp 自定义加载/保存方法 
void CXXXApp::PreLoadState() 

    BOOL bNameValid; 
    CString strName; 
    bNameValid = strName.LoadString(IDS_EDIT_MENU); 
    ASSERT(bNameValid); 
    GetContextMenuManager()->AddMenu(strName, IDR_POPUP_EDIT); 

要弹出菜单的时候,只需要调用ShowPopupMenu即可。如下类似:

BOOL CXXXForEdit::PreTranslateMessage(MSG* pMsg) 
{     
    if   ((pMsg->message   ==   WM_RBUTTONDOWN))   
    { 
        CPoint point(pMsg->pt);         
        theApp.GetContextMenuManager()->ShowPopupMenu(IDR_POPUP_EDIT, point.x, point.y, this, TRUE); 
        return   TRUE;  
    } 
    else   
        return CXXXForEdit::PreTranslateMessage(pMsg); 

如果是要弹出另一个菜单资源ID的话,需要先在CXXXApp::PreLoadState()里面添加快捷菜单,如下:

void CXXXApp::PreLoadState() 

    BOOL bNameValid; 
    CString strName; 
    bNameValid = strName.LoadString(IDS_EDIT_MENU); 
    ASSERT(bNameValid); 
    GetContextMenuManager()->AddMenu(strName, IDR_POPUP_EDIT); 
    GetContextMenuManager()->AddMenu(_T("专门编辑"), IDR_POPUP_FOREDIT); 

这时,才能使用下面语句调用:

theApp.GetContextMenuManager()->ShowPopupMenu(IDR_POPUP_FOREDIT, point.x, point.y, this, TRUE); 

要为菜单添加图标的话,要使用到CMFCToolBar::AddToolBarForImageCollection ()函数,其函数原型如下:

static BOOL __stdcall AddToolBarForImageCollection( 
   UINT uiResID,    //Resource ID of a toolbar with images to load. 
   UINT uiBmpResID=0,    //Resource ID of a bitmap with toolbar images. 
   UINT uiColdResID=0,    //Resource ID of a bitmap with "cold" toolbar images. 
   UINT uiMenuResID=0,    //Resource ID of a bitmap with menu images. 
   UINT uiDisabledResID=0,//Resource ID of a bitmap with disabled toolbar images. 
   UINT uiMenuDisabledResID=0 //Resource ID of a bitmap with disabled menu images. 
); 

在资源视图ToolBar插入一个ToolBar,然后创建四个工具栏对象,如下图所示:

接着四个工具栏对象的ID号要跟需要绑定到菜单项图标的ID号一致,且顺序一致。接着把预先准备好的工具栏图像位图BMP,加载到资源视图里面,修改其ID为IDB_POPUP_BITMAP,如下图所示:

然后,在初始化函数OnInitialUpdate()下添加入下代码:

CMFCToolBar::AddToolBarForImageCollection (IDR_TOOLBAR1,IDB_POPUP_BITMAP); 

运行程序就可以看到效果了,但是此时还是灰色状态,为菜单项“添加事件处理程序”,结果如下图所示:

参考资料:
1.CContextMenuManager http://msdn.microsoft.com/en-us/library/bb982387.aspx
2.CMFCToolBar::AddToolBarForImageCollection http://msdn.microsoft.com/en-us/library/bb983344%28VS.90%29.aspx
3.BCGControlBar菜单编程方法详解 http://www.evget.com/zh-CN/Info/catalog/14414.html

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

CContextMenuManager上下文菜单管理器以及为菜单添加图标相关推荐

  1. 完美者右键扩展菜单管理器 1.2.1 中文绿色版

    软件名称: 完美者右键扩展菜单管理器 1.2.1 中文绿色版 软件语言: 简体中文 授权方式: 免费软件 运行环境: Win7 / Vista / Win2003 / WinXP 软件大小: 590K ...

  2. 计算机右键菜单更换顺序,win8右键新建菜单管理:调整新建菜单顺序让右键更贴心(图文)...

    系统城的小编这里要为大家带来的是关于Win8系统调整新建菜单顺序让右键更贴心的设置,大家知道,在Win8系统当中,我们会经常用到系统桌面下的右键菜单,特别是右键菜单中的新建菜单,在右键新建菜单用的如此 ...

  3. Excel事件触发VBA配置 - 名称管理器下拉菜单选项事件

    因业务需求,不适合使用Excel的combobox捕捉事件处理.需求用数据有效性来定义下拉菜单,并当选项变更时触发事件.经学习发现,在每个表格的独立VBA代码内可以配置事件触发管理. 如图: 代码如下 ...

  4. 移除【此电脑】设备与管理器中的一切流氓图标~快捷方式,比如WPS网盘图标

    1.Win+R快捷键打开注册表输入regedit 2.路径填入 计算机\HKEY_USERS\S-1-5-21-2836615258-4213153548-2236640551-500\SOFTWAR ...

  5. MFC---上下文菜单(快捷菜单)管理器

    在MFC中的app类的InitInstance函数中,我们会看到这样一个函数,InitContextMenuManager,从它的字面意义可以看出是"初始化上下文菜单管理器".像这 ...

  6. java在菜单的布局实例_6.Java-GUI布局管理器

    布局管理器 Java的GUI组件都放置在容器中,他们的位置是由容器的布局管理器来管理的.在前面的程序中,并没有指定将OK按钮放置在框架的什么位置,但是,Java知道应该把它放置在哪里,因为在后台工作的 ...

  7. SSM框架实现后台管理系统权限管理(用户、菜单、角色)

    文章目录 后台管理系统开发 一.数据库表结构设计 1.菜单表menu 2.用户表user 3.角色表role 4.角色权限表role_menu 5.用户角色表user_role 二.项目准备 1.创建 ...

  8. 开源 java CMS - FreeCMS2.4 菜单管理

    2019独角兽企业重金招聘Python工程师标准>>> 原文地址:http://www.javaz.cn/site/javaz/site_study/info/2015/37587. ...

  9. 开源 免费 java CMS - FreeCMS2.1 菜单管理

    2019独角兽企业重金招聘Python工程师标准>>> 项目地址:http://www.freeteam.cn/ 菜单管理 FreeCMS在设计时定位于面向二次开发友好,所以Free ...

最新文章

  1. 分子偶极矩大小如何判断_润滑油粘度大小该如何判断你知道吗?
  2. python3 枚举定义和使用
  3. 有关C++多态的一些测试
  4. 上下文管理、线程池、redis订阅和发布
  5. byte数组转字符串_leetcode刷题844比较含退格的字符串(带代码解析,带知识点回顾)...
  6. Boost:opencv卷积的测试程序
  7. web项目没有run on server时..
  8. Linux - 用户与组
  9. centos 下的 PHP 的编译过程
  10. php怎样传数据到html代码,传递数据到PHP文件与HTML模板
  11. jumserver 官方文档和
  12. oracle中分析函数range值范围,Oracle实战4(分析函数)
  13. 超全!体验度量理论2021版
  14. 中国远程医疗行业发展前景预测和投资规划分析报告2022-2027年
  15. 单片机/C语言浮点型数据转换为字符串方法
  16. 刚刚,Google AI 部门换帅,李飞飞宣布离职!
  17. AM5728配置DMM_LISA_MAP修改内存工作模式
  18. 中鑫吉鼎|保本理财产品的优缺点分析对比
  19. 【Vue3】电商网站吸顶功能
  20. 入门python,看完这个300行代码的例子,足矣~

热门文章

  1. C语言,利用条件语句判断是否为三角形并输出面积
  2. mysql左右连接举例_MYSQL 连接举例
  3. 为 .net 生态贡献力量——制作并上传 nuget 包(内有独家彩蛋)
  4. HTML连载70-相片墙、盒子阴影和文字阴影
  5. 宝塔面板 nginx+apache共存 之 KVS服务器运行环境搭建过程记录
  6. 性能测试工具Gatling
  7. c语言指针官方解释_C语言中的指针解释了–它们并不像您想象的那么难
  8. JavaScript数组方法终极指南-地图
  9. css网格_CSS网格初学者指南
  10. 解决浏览器兼容性问题面试题_如果不解决技术面试问题,就无法解决技术多样性问题。 这是数据。...