180109 逆向-Windows消息机制(鼠标消息)

本文介绍了Windows消息系统中的鼠标消息,包括客户区和非客户区的消息类型、参数解析及坐标转换。详细讲解了WM_MOUSEMOVE、WM_LBUTTONDOWN等客户区消息,以及WM_NCHITTEST非客户区命中测试消息的处理流程。通过ScreenToClient和ClientToScreen API实现坐标转换,并讨论了窗口过程函数如何处理WM_NCHITTEST以产生其他鼠标消息。
摘要由CSDN通过智能技术生成

1625-5 王子昂 总结《2018年1月9日》 【连续第466天总结】
A. Windows消息系统-鼠标消息
B.

概述

鼠标消息分为客户区消息和非客户区消息
动作包括单击、双击、拖拽

Windows为鼠标定义了21种消息,包括10个客户区消息,10个非客户区消息和1个非客户区命中测试消息

客户区鼠标消息

在客户区按下或释放鼠标时,窗口会接收到9种消息
包括左、中、右键的按下、释放、双击

剩下的一种则是鼠标在客户区移动时接收到的WM_MOUSEMOVE消息

以上所有消息的lParam值中均含有鼠标以客户区为坐标系的位置坐标,横坐标x为低位,纵坐标y为高位。坐标系原点位于客户区左上角,右下角为(X_MAX, Y_MAX)
而wParam的值指示鼠标键、Shift键和Ctrl键的状态,当按下其他5个键时wParam会在特定的位上置1
位以宏MK_LBUTTON等指示
取用方法为if(wParam&MK_SHIFT)

鼠标移动时会不断发出WM_MOUSEMOVE消息,但不是每个像素,而是取决于硬件的设置

非客户区鼠标消息

10个消息的种类与客户区鼠标消息相同,分别为3x3个击键消息和1个移动消息
但是附带参数完全不同
lParam值中依然是鼠标的位置,但此时的坐标系为屏幕,同样低位为横轴x,高位为纵轴y。坐标系原点位于屏幕左上角,右下角为(X_MAX, Y_MAX)

客户区坐标和屏幕坐标可以通过ScreenToClient和ClientToScreen两个API进行转换

wParam值中还是移动或击键时的位置,但是一些区域的值&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值