minigui[基础篇][9]—— 键盘和鼠标之鼠标

本文介绍了鼠标输入的基本原理,包括鼠标光标的显示与位置跟踪,以及如何通过SetCapture函数实现鼠标消息的捕获,允许应用程序接收特定窗口外的鼠标事件。

1.鼠标输入

1.用户移动鼠标时,系统在屏幕上移动一个称为鼠标光标的小位图
2.鼠标光标含有一个叫做热点的像素点,系统用它来跟踪和识别光标的位置
3.如果发生了鼠标事件,热点所在位置下的窗口通常会接收到相关的鼠标消息
4.能够接收鼠标消息的窗口并不一定是活动窗口或具有键盘输入焦点

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-l62pCBub-1665111610205)(C:\Users\cjy\AppData\Roaming\Typora\typora-user-images\image-20221007095732208.png)]

2.鼠标消息

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LwYBH834-1665111610207)(C:\Users\cjy\AppData\Roaming\Typora\typora-user-images\image-20221007100739052.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M5oPCzJA-1665111610208)(C:\Users\cjy\AppData\Roaming\Typora\typora-user-images\image-20221007104129486.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CBut02r9-1665111610210)(C:\Users\cjy\AppData\Roaming\Typora\typora-user-images\image-20221007104239152.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XbHquMid-1665111610212)(C:\Users\cjy\AppData\Roaming\Typora\typora-user-images\image-20221007104446339.png)]

3.鼠标捕获

接收鼠标消息的窗口
1.窗口过程通常只在鼠标光标位于窗口的客户区或非客户区上时才接收鼠标消息,也就是说,系统只向光标热点之下的窗口发
送鼠标消息  ------ 这种是客户区坐标
2.但是某些时候应用程序可能需要接收鼠标消息,即使光标热点在它的窗口范围之外,这种情况下,我们可以使用 SetCapture函数来使某个窗口捕获鼠标,在应用程序调用 ReleaseCapture 恢复正常的鼠标处理方式之前,这个窗口将接收所有的鼠标消息 ----- 这种是屏幕坐标
HWND GUIAPI SetCapture(HWND hWnd);
void GUIAPI ReleaseCapture(void);
HWND GUIAPI GetCapture(void);

例程

#include <minigui/common.h>
#include <minigui/minigui.h>
#include <minigui/gdi.h>
#include <minigui/window.h>
#include <minigui/control.h>
#define IDC_MYBUTTON 100
/* 简单按钮控件类的回调函数 */
static int MybuttonWindowProc (HWND hWnd, int message, WPARAM wParam, LPARAM lParam)
{
   
   
    HDC hdc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值