版权声明:www.gudianxiaoshuo.com 原创文章版权 -- 古典小说网

WM_CONTEXTMENU消息 用来响应鼠标右键消息, 它响应的不是鼠标右键按下消息,也不是鼠标右键弹起消息

而是鼠标右键 依次按下弹起后触发的消息。

因此,若程序还响应了鼠标右键按下的消息OnRButtonDown,且在此响应函数中有模特对话框出现的话,则不会响应WM_CONTEXTMENU消息。

比如,有AfxMessageBox(L"Right Down"); 模特对话框出现在右键按下响应函数中, 则关闭此模特对话框后,不在响应右键菜单消息。

原因在于:

右键菜单 是在右键依次按下弹起时才被触发的。

右键按下, 模特对话框产生时,消息只被发送到了模特对话框,因此,鼠标弹起消息未被发送到主窗口,因此,不会响应右键菜单消息。

但是,如果在右键弹起响应函数OnRButtonUp中响应模特对话框消息的话, 右键菜单消息 不会被影响。

原因是: 此时鼠标按下、弹起消息均已被发送到了主窗口,因此程序在关闭模特对话框后,仍会响应右键菜单消息。

[cpp] view plaincopyprint?
  1. OnContextMenu(CWnd* pWnd, CPoint point)
  2. {
  3. CPoint pt=point;
  4. CMenu menu;
  5. CMenu* PopupMenu=NULL;
  6. ScreenToClient(&pt);
  7. //加载菜单
  8. menu.LoadMenu(IDR_IMAGEVIEW);
  9. //子菜单项
  10. //右键点击 弹出此子菜单项
  11. PopupMenu=menu.GetSubMenu(3);
  12. PopupMenu->TrackPopupMenu(TPM_RIGHTBUTTON | TPM_LEFTALIGN,point.x,point.y,this);
  13. }

OnContextMenu(CWnd* pWnd, CPoint point)
{CPoint pt=point;CMenu menu;CMenu* PopupMenu=NULL;ScreenToClient(&pt);//加载菜单menu.LoadMenu(IDR_IMAGEVIEW);//子菜单项//右键点击 弹出此子菜单项PopupMenu=menu.GetSubMenu(3);PopupMenu->TrackPopupMenu(TPM_RIGHTBUTTON | TPM_LEFTALIGN,point.x,point.y,this);
}

参考资料:

http://topic.csdn.net/t/20061114/18/5157800.html

MFC OnContextMenu相关推荐

  1. 第三部分:MFC中控件的样式

    2019独角兽企业重金招聘Python工程师标准>>> 第三部分:MFC中控件的样式 控件是用来建立Windows应用程序用户界面的用户界面对象.你所见到的大部分Windows应用程 ...

  2. Visual C++ MFC/ATL开发-提高篇

    MFC简单打印方法 通过MFC来完成打印作业有很多的方法,应用场合也有所不同.我们通常是利用视图框架在MFC基础之上按照OnPreparePrinting() à OnBeginPrinting()  ...

  3. 孙鑫-MFC笔记九--菜单编程

    弹出菜单(Pop-up)是不能用来作命令响应的.即下拉等形式. 响应菜单响应命令的顺序是:视类,文档类,框架类,应用程序类. Windows消息分三类: 标准消息,WM_ (除WM_COMMAND)都 ...

  4. ActiveX控件的MFC实现(VS2017,OpenGL)

    文章目录 1.简介 2.代码编写 3.注册控件 4.结果运行 后记 1.简介 ActiveX 控件是允许网站提供视频和游戏等内容的小应用. 浏览 Web 时,你也可以使用这些小应用与工具栏和股票代码等 ...

  5. MFC应用的菜单,工具栏和状态栏(vs2019)

    继续MFC的应用学习记录: 这次是菜单,工具栏,状态栏这三个功能实现: 第一步还是创建基于单文档的应用程序: 创建好后,打开资源视图: 功能1:菜单 在资源视图中找到Menu,打开ID_MAINFRA ...

  6. 【MFC】学生数据管理-广州大学程序设计课程设计报告

    目录 一.课程设计题目及内容 二.程序中使用的数据及主要符号说明 三.带有详细注释的自己编写的源程序 四.程序运行时的效果图 五.实验结果分析,实验收获和体会. 1.实验结果分析: 2.实验收获和体会 ...

  7. MFC——OpenGL编程

    目标 (1) 绘制三个立方体,位置如图所示.要求绘制出坐标系的 3 个坐标轴. (2)三个立方体一起沿着坐标轴(x 或 y 或 z)旋转起来.说 明:旋转可以通过设置时钟事件来实现,提供的程序里 已经 ...

  8. VC,MFC开发技巧收集

    (mainmenu->GetSubMenu (0))->DeleteMenu(i,MF_BYPOSITION); break; } } 十五.改变应用程序的图标 缺 十六.另一种改变窗口标 ...

  9. MFC快捷菜单以及位图的加载和移动操作

    文章目录 一.效果: (一)画直线 (二)画矩形 二.基本介绍 (一)功能实现用到的方法 (二)环境描述 三.实现过程 (一)主编框调整 (二)快捷菜单的使用 1.添加快捷菜单资源 2.类向导里添加相 ...

最新文章

  1. iOS开发多线程篇—多线程简单介绍
  2. 2012 Java陷阱
  3. 华为云PB级数据库GaussDB(for Redis)解析第二期:Redis消息队列Stream的应用探讨
  4. DOM---documentFragment
  5. 支付顺序--微信支付到公司账户--待出票
  6. 怎么实现两周联动加减速_猎魂觉醒与仁王开启联动,猎魂觉醒团队还与“仁王”制作人聊了聊...
  7. 第一篇:了解和使用MVPArms项目
  8. sqliteman安装错误
  9. java.util.Scanner包的使用
  10. 视觉测量系统实现尺寸测量的4个步骤
  11. too few variables specified 怎么解决
  12. 搭建普罗米修斯Prometheus监控系统
  13. 基于Qt的上古神器-Qt Cryptographic Architecture (QCA)加密库介绍
  14. postman使用自定义函数
  15. Swift5 10.初始化Initialization(待深究)
  16. 不是码农,不会敲代码的她,却最懂程序员!| 人物志
  17. 一文盘点NeurIPS'22杰出论文亮点!英伟达AI大佬一句话总结每篇重点,一并看透今年技术趋势...
  18. js 兼容事件添加addEvent()
  19. 编程猫Nemo基本代码块
  20. Linux 清理 firewalld 和 iptables 所有规则

热门文章

  1. 都2039年了,还不会编译JDK源码?这篇文章该看看了~~
  2. 固态硬盘的选择、安装以及双系统的安装流程(联想E520)
  3. matlab大小端模式转化十进制
  4. mbedtls | 06 - 非对称加密算法的配置与使用(RSA算法)
  5. 蓝桥杯—三羊献瑞,祥瑞生辉+三羊献瑞
  6. PHP 零基础入门笔记(6):PHP 流程控制
  7. html怎么画3角型当背景,纯CSS画三角原理解析
  8. 小技巧---查看电脑显卡型号
  9. 年薪50w软测工程师,带你了解,Linux系统物理CPU和逻辑CPU的区别
  10. Word2003工具栏不见了,如何恢复?