今天遇到了个问题,对某窗口进行右键弹出菜单,发现没弹出来,然后打断点发现WM_RBUTTONUP消息收不到

捣鼓了下,找到了原因。

在Duilib中,当设置了Caption后,Duilib处理鼠标点击测试消息:WM_NCHITTEST

如上,即当鼠标点击是Caption区域,如果不是Button或者RichEdit的话,会返回HTCAPTION,即告诉WINDOWS我是非客户端区。

非客户端,用户可以用鼠标对窗口进行拖拽(相当于模拟了标题栏)。

此时,当用户鼠标点击时,你就得不到常规的WM_LBUTTONXXX 与 WM_RBUTTONXXX了

相反,你会得到WM_NCLBUTTONXXX 与 WM_NCRBUTTONXXX

因此,如果你想通过鼠标右键产生菜单的话,可以同时处理

case WM_RBUTTONUP:             //leave it down

case WM_NCRBUTTONUP:

CreateMenu();

break;

更多的关于WM_NCHITTEST,可参考这篇文章https://www.cnblogs.com/GnagWang/archive/2010/09/12/1824394.html

WM_RBUTTONUP消息收不到问题的更多相关文章

  1. Android App用MulticastSocket监听组播,为什么连接到不同路由、在不同手机上跑,有的能收到有的收不到

    ---------------------------!! 转载请注明出处 !!-----------------------   一个项目,利用wifi组播在局域网内发现设备.却发现在有的路由器上能 ...

  2. Windows程序设计2(消息机制、菜单)

    一 .小记; PostQuitMessage(0); 产生WM_QUIT消息给进程队列,且立即返回,同时使得消息循环退出,使得进程终止.(其实它通过PostMessage(hWnd,WM_QUIT,0 ...

  3. Clojure:通过ZeroMQ推送消息

    通过ZeroMQ的pub/sub模式,我们可以实现发送推送消息的功能.以下为示例代码(入门可参考此文:http://www.cnblogs.com/ilovewindy/p/3984269.html) ...

  4. 没用过消息队列?一文带你体验RabbitMQ收发消息

    人生终将是场单人旅途,孤独之前是迷茫,孤独过后是成长. 楔子 先给大家说声抱歉,最近一周都没有发文,有一些比较要紧重要的事需要处理. 今天正好得空,本来说准备写SpringIOC相关的东西,但是发现想 ...

  5. 第14章 位图和位块传输_14.4 GDI位图对象(2)

    14.4.7 在位图上绘图 (1)在内存设备环境中绘图(与真实DC不同的是,内存DC的显示表面是个位图) (2)GetTextExtentPoint32函数:用于确定文本字符串的像素大小.(此大小就是 ...

  6. Bluemix中国版体验(二)

    从上一篇到现在大概有一个多月了.时隔一个月再登录中国版Bluemix,发现界面竟然更新了,现在的风格和国际版已经基本保持一致!这次我们来体验一下Mobile Service.不过mobile serv ...

  7. XSS 前端防火墙 —— 天衣无缝的防护

    上一篇讲解了钩子程序的攻防实战,并实现了一套对框架页的监控方案,将防护作用到所有子页面. 到目前为止,我们防护的深度已经差不多,但广度还有所欠缺. 例如,我们的属性钩子只考虑了 setAttribut ...

  8. 对iOS10新增Api的详细探究

    本文主要是一些对iOS新功能的探索,之前发现博客里关于iOS新功能的分析大多是过于概括,每个功能几句话,无法了解到具体的功能.所以本次的探索是基于Api层面,着重看一些具体用法所做的笔记,本来想分别画 ...

  9. Kafka vs RocketMQ——多Topic对性能稳定性的影响-转自阿里中间件

    引言 上期我们对比了RocketMQ和Kafka在多Topic场景下,收发消息的对比测试,RocketMQ表现稳定,而Kafka的TPS在64个Topic时可以保持13万,到了128个Topic就跌至 ...

随机推荐

  1. 解决c#distinct不好用的问题

    当一个结合中想根据某一个字段做去重方法时使用以下代码 IQueryable 继承自IEnumerable 先举例: #region linq to object List<People> ...

  2. python_多线程多进程

    多线程,适用于IO密集型任务 IO,input,output缩写,包括网路io(比如上传下载),磁盘io,(比如数据库读写),CPU操作不频繁 多进程,适用于CPU密集型任务 数据分析,算法,依赖CP ...

  3. jprofiler 监听远程java项目

    1.下载.安装windows和linux版的jprofile.注意:若监控的是springboot.springcloud项目,切记本地和服务器上的jprofile要版本保持一致,本人亲自踩过坑. 官 ...

  4. javascript中创建对象的方式及优缺点(二)

    一.工厂模式 流程: 定义一个函数,函数返回对象. 适用场景: 需要创建多个对象,都是Object类型. 优点:完成了返回一个对象的要求. 缺点: 对象没有一个具体的类型,无法通过constructo ...

  5. 深度学习笔记(十二)车道线检测 LaneNet

    论文:Towards End-to-End Lane Detection: an Instance Segmentation Approach 代码:https://github.com/MaybeS ...

  6. JDK_API剖析之java.lang包

    java.lang是Java语言的基础包,默认包中的所有来自动import到你写的类中.(按照字母排序) 1.AbstractMethodError 类.错误 自1.0开始有 继承自Incompati ...

  7. springboot + mybatis sql日志

    #mapper sql日志 替换成你的mapper接口所在的包名 logging.level.com.example.dao=debug

  8. 我不熟悉的set

    同样的我着重介绍那些我不怎么用到的系列,同时,常用的我就点一下. 我们都知道set底层是用红黑树实现的,红黑树是一种已排序的树,所以我们通过迭代器来访问节点元素的时候,并不可以改变它,如果随意改变,那 ...

  9. XFF和referer

    XFF构造来源IP Refer构造来源浏览器

  10. C++入门经典-例4.10-使用static变量实现累加

    1:静态变量static可以分为静态局部变量和静态全局变量,静态局部变量的值在函数调用结束后不消失,静态全局变量只能在本源文件中使用. 静态变量属于静态存储方式,它具有以下特点: (1)静态变量在函数 ...