[Win32]Win32 SDK编程系列文章——鼠标输入消息

本文详细介绍了Win32环境下鼠标输入消息的处理,包括鼠标按钮的各种消息如WM_LBUTTONDOWN、WM_RBUTTONDOWN,以及特殊消息如滚轮消息WM_WHEEL。即使没有输入焦点,窗口仍能接收到鼠标消息。对于双击消息,窗口需要具有CS_DBLCLKS风格。实例部分展示了关键代码,帮助理解鼠标位置和按钮状态的获取。
摘要由CSDN通过智能技术生成

理论

和处理键盘输入一样,WINDOWS将捕捉鼠标动作并把它们发送到相关窗口。这些活动包括左、右键按下、移动、双击新式鼠标还包括滚轮消息WM_WHEEL等。WINDOWS并不像处理键盘输入那样把所有的鼠标消息都导向有输入焦点的窗口,任何鼠标经过的窗口都将接收到鼠标消息,无论有否输入焦点。另外,窗口还会接收到鼠标在非客户区移动的消息(WM_NCMOVE),但大多数的情况下我们都会将其忽略掉。 对鼠标的每一个按钮都有两个消息:WM_LBUTTONDOWN,WM_RBUTTONDOWN 。对于三键鼠标还会有WM_MBUTTONDOWN和WM_MBUTTONUP消息,当鼠标在某窗口客户区移动时,该窗口将接收到WM_MOUSEMOVE消息。一个窗口若想处理WM_LBUTTONDBCLK或 WM_RBUTTONDBCLK,那么它的窗口类必须有CS_DBLCLKS风格,否则它就会接受到一堆的按键起落(WM_XBUTTONDOWN或WM_XBUTTONUP)的消息。 对于所有的消息,窗口过程函数传入的参数lParam包含了鼠标的位置,其中底位为x坐标,高位为y坐标,这些坐标值都是相对于窗口客户区的左上角的值,wParam中则包含了鼠标按钮的状态。

实例

关键代码

//示例程序演示了如何等待左键按下消息,我们将在按下的位置显示一个字符串。
TCHAR FontName[]=_T("宋体");
TCHAR szCaptionmain[]=_T("My First Window!");
WPARAM keyChar =0x20;//0x20(十六进制)是空格的ascii码,亳州没有按键的时候程序正常显示
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值