首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >COleControl中未处理的LButtonUp窗口消息

COleControl中未处理的LButtonUp窗口消息
EN

Stack Overflow用户
提问于 2013-01-23 12:10:58
回答 1查看 382关注 0票数 0

我的项目中有一个COleControl对象。在这个COleControl中,我有一个CRectTracker对象。

我想要处理WM_LButtonUp的windows消息(事件)。(当用户停下来按下鼠标左键时)。

在我的.h文件中,我写道:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);

在我的.cpp文件中

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
BEGIN_MESSAGE_MAP(CMyControl, COleControl)

我添加了

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ON_WM_LBUTTONUP()

然后我开发了一种方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void CMyControl::OnLButtonUp(UINT nFlags, CPoint point) 

我对windows消息LButtonDown做了同样的事情。

当我将鼠标左键留在控件中时,方法会获得句柄,一切都会正常工作。当鼠标跟踪器位于CRectTracker对象上时,当我离开鼠标左键时,就会出现问题。在这种情况下,不会处理鼠标LButtonUp消息。

我尝试使用Spy++,我可以看到windows消息WM_LButtonUp的存在并按预期发生。但这是我的代码,它不会得到处理(只是在CRectTracker上使用鼠标的情况)。

即使当鼠标在CRectTracker上时按下鼠标键时,LButtonDown事件也始终得到成功处理。

LButtonUp消息会有什么问题?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-23 13:31:59

这只是跟踪器工作方式不可避免的副作用。一旦您单击跟踪器或其中一个大小调整手柄,MFC就会捕获鼠标并启动一个模式消息循环。它将提取鼠标移动和按键向上的消息以实现跟踪操作。该循环不会退出,直到看到左按钮向上的消息,看到Esc键或捕获丢失。因此,您的OnLButtonUp()函数不能在该循环处于活动状态时运行,消息在被分派之前就被截获了。

您需要以不同的方式执行此操作,而不是依赖于OnLButtonUp()。很难给出具体的建议,因为你没有描述为什么需要它。如果您需要更深入的了解,可以在atlmfc/src/mfc/trckrect.cpp,CRectTracker::TrackHandle()中找到模态循环的源代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14479418

复制
相关文章
为什么我们的机器学习平台支持Python,而不是R
有很多文章比较了Python和R在数据科学方面的相对优点。但是这并不在这篇文章的讨论范围。这篇文章是关于数据分析师和机器学习工程师的分歧,以及他们对编程语言的不同需求。
HuangWeiAI
2020/03/18
6840
为什么我们的机器学习平台支持Python,而不是R
为什么我们选择使用 React 而不是 Angular 构建新 UI
我们在2013年推出了Cloud Elements集成平台的v1版本,这个产品在过去几年里一直为客户和公司发展提供了良好的服务。但是2017年,Web技术迅速演变,从而使用户期望也进一步发展。现在是我们重新思考整个开发者流程的时候了,这也为我们重新思考我们的技术栈提供了一个机会。 在产品发布周期和发布期限的世界中,技术的选择至关重要。以下是我们一路走来的历程,帮助你揭开一些关于React的实用亮点。
疯狂的技术宅
2019/03/28
2.3K0
为什么我们选择使用 React 而不是 Angular 构建新 UI
为什么我们选择使用 React 而不是 Angular 构建新 UI
我们在2013年推出了Cloud Elements集成平台的v1版本,这个产品在过去几年里一直为客户和公司发展提供了良好的服务。但是2017年,Web技术迅速演变,从而使用户期望也进一步发展。现在是我们重新思考整个开发者流程的时候了,这也为我们重新思考我们的技术栈提供了一个机会。 在产品发布周期和发布期限的世界中,技术的选择至关重要。以下是我们一路走来的历程,帮助你揭开一些关于React的实用亮点。 我们来自哪里 在React之前,我们使用AngularJS,这可能是当时被选中的最流行的前端框架。 但是如
顶级程序员
2018/05/03
2.7K0
为什么我们选择使用 React 而不是 Angular 构建新 UI
html 转换为cshtml,使用Html而不是csHtml
我想使用纯HTML页面而不是使用MVC .net的cshtml . 但是当我通过右键单击索引添加视图时,我只能看到两个选项 .
全栈程序员站长
2022/09/10
2.5K0
Spot CEO:我们为什么选择Babylon.js而不是Three.js
为现代网络开发令人兴奋的事情之一是底层平台的快速发展。 WebAssembly、WebGL、WebGPU、Web Worker 等正在解锁以前典型 Web 产品无法想象的体验。 在过去的几年里,我们看到像 Figma 这样的产品利用这一点创造了极具吸引力的业务和产品。
用户1758543
2023/05/08
2.2K0
Spot CEO:我们为什么选择Babylon.js而不是Three.js
开始使用HTML
HTML指的是超文本标记语言(HyperText Markup Language),是用来描述网页的一种语言。 HTML使用标签来描述网页。 本文目录 1 编辑器与浏览器 2 床前明月光 3 标题与段落 4 注释 5 链接 6 文本格式化 7 列表 8 表格 9 图像,音频,视频 10 区块 11 表单 12 相关
mwangblog
2018/07/04
4420
innodb为什么选择B+ Tree而不是跳表,Redis为什么选择跳表而不是B+ Tree
链表和数组相比,数组可以通过下标快速定位,或者通过二分查找,查询复杂度为O(logn),而链表只能按照顺序挨个查找,复杂度为O(n)。
大忽悠爱学习
2023/03/23
2.4K0
innodb为什么选择B+ Tree而不是跳表,Redis为什么选择跳表而不是B+ Tree
【开学季】调查报告:我们为什么要做学霸而不是学渣?
本文作者:马不停蹄 编者按:“学霸”,并不是那个把定理背的滚瓜烂熟的人,而是能活学活用、有独立思考能力的人。“学渣”,也不是课堂上不够优秀的人,而是任何事情都做不好的人。在我们曲解“学霸”和“学渣”的概念、并放大小概率事件的时候,我们不过是在为自己的慵懒,找一个连“冠冕堂皇”都算不上的貌似合理的借口。 学霸和学渣的各种故事,是最近两年微博上各类段子手们拿来创作的一个重要题材,大部分都以嘲讽学霸为主,有几个比较流行的:比如什么上学时一定要善待身边的差生,因为将来你大学毕业去工地搬砖时会发现他们是你的
小莹莹
2018/04/20
6500
【开学季】调查报告:我们为什么要做学霸而不是学渣?
为什么建议你用nullptr而不是NULL?
在C语言中,我们常常用NULL作为指针变量的初始值,而在C++中,却不建议你这么做。
编程珠玑
2019/08/28
9.6K0
为什么建议使用你 LocalDateTime ,而不是 Date?
多线程并发如何保证线程安全 - 避免线程之间共享一个SimpleDateFormat对象,每个线程使用时都创建一次SimpleDateFormat对象 => 创建和销毁对象的开销大 - 对使用format和parse方法的地方进行加锁 => 线程阻塞性能差 - 使用ThreadLocal保证每个线程最多只创建一次SimpleDateFormat对象 => 较好的方法
芋道源码
2019/10/23
1.6K0
为什么特征工程要用 SQL 而不是 Python
我们常说机器学习是一门实验科学。所以相比较传统工程而言,机器学习分成两个大的阶段:
用户2936994
2022/05/18
8230
为什么特征工程要用 SQL 而不是 Python
JDBC为什么要使用PreparedStatement而不是Statement
前言 这篇博客不是我写的,是由刘志军大大翻译的,真心觉得很棒,而且是必学要掌握的东西,所以就转载过来了,我个人的第一篇转载文章。 开始 PreparedStatement是用来执行SQL查询语句的API之一,Java提供了 Statement、PreparedStatement 和 CallableStatement三种方式来执行查询语句,其中 Statement 用于通用查询, PreparedStatement 用于执行参数化查询,而 CallableStatement则是用于存储过程。同时Prepar
roobtyan
2018/06/04
1.4K0
JDBC为什么要使用PreparedStatement而不是Statement
PreparedStatement是java.sql包下面的一个接口,用来执行SQL语句查询,通过调用connection.preparedStatement(sql)方法可以获得PreparedStatment对象。数据库系统会对sql语句进行预编译处理(如果JDBC驱动支持的话),预处理语句将被预先编译好,这条预编译的sql查询语句能在将来的查询中重用,这样一来,它比Statement对象生成的查询速度更快。下面是一个例子:
哲洛不闹
2018/09/19
9440
JDBC为什么要使用PreparedStatement而不是Statement
为什么我会选择 React 而不是 Vue?
你注意到我过于圆滑的标题了吗?我将依据我所喜欢的方式去构建这个对话,而不是我客观上认为的唇枪舌战。我想后者并不会起作用。
疯狂的技术宅
2019/03/27
1.4K0
为什么建议使用你 LocalDateTime ,而不是 Date?
来源:juejin.im/post/5d7787625188252388753eae
JAVA葵花宝典
2019/10/29
1.1K0
为什么建议你使用LocalDateTime而不是Date?
calendar是共享变量,并且这个共享变量没有做线程安全控制。当多个线程同时使用相同的SimpleDateFormat对象【如用static修饰的SimpleDateFormat】调用format方法时,多个线程会同时调用calendar.setTime方法,可能一个线程刚设置好time值另外的一个线程马上把设置的time值给修改了导致返回的格式化时间可能是错误的。在多并发情况下使用SimpleDateFormat需格外注意SimpleDateFormat除了format是线程不安全以外,parse方法也是线程不安全的。parse方法实际调用alb.establish(calendar).getTime()方法来解析,alb.establish(calendar)方法里主要完成了
Bug开发工程师
2020/03/12
2.1K0
为什么建议使用你 LocalDateTime ,而不是 Date?
来源:juejin.im/post/5d7787625188252388753eae
用户1516716
2019/10/24
1.1K0
为什么是int main()而不是void main()
这是基于我们学校老师一直使用void main(),而发的感慨,大一学习C语言时,我就在想,老师上课演示的为什么一直用void main(),而不是int main()呢?不为了偷懒?还是习惯性的语句呢?在查阅了部分大牛的博客,翻阅了C Primer Plus和C++ Primer Plus这两本圣经级别的书本之后,得出以下结论(有一部分是别人的结论,属于半转载),可能不太严谨,请多多包涵。
对弈
2019/09/04
3.7K0
JDBC为什么要使用PreparedStatement而不是Statement
PreparedStatement是java.sql包下面的一个接口,用来执行SQL语句查询,通过调用connection.preparedStatement(sql)方法可以获得PreparedStatment对象。数据库系统会对sql语句进行预编译处理(如果JDBC驱动支持的话),预处理语句将被预先编译好,这条预编译的sql查询语句能在将来的查询中重用,这样一来,它比Statement对象生成的查询速度更快。下面是一个例子:
哲洛不闹
2018/09/19
1K0
JDBC为什么要使用PreparedStatement而不是Statement
为什么建议使用你LocalDateTime,而不是Date?
在项目开发过程中经常遇到时间处理,但是你真的用对了吗,理解阿里巴巴开发手册中禁用static修饰SimpleDateFormat吗?
良月柒
2019/10/28
1.4K0
为什么建议使用你LocalDateTime,而不是Date?

相似问题

如何从POST接收JSON?

129

如何使用POST方法从android接收json对象

13

节点从axios post接收post json

11

从POST请求接收JSON响应

11

从接收的POST阵列解码JSON

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文