在 MFC 中捕获鼠标指针形状更改事件

Posted

技术标签:

【中文标题】在 MFC 中捕获鼠标指针形状更改事件【英文标题】:Capturing Mouse pointer shape change event in MFC 【发布时间】:2012-04-11 06:11:18 【问题描述】:

我正在编写一个需要鼠标指针形状更改通知的 Windows 应用程序。我已经彻底搜索,但找不到令人满意的解决方案。我想收到关于光标形状更改以及光标类型更改的通知。

从搜索中我了解到,我必须在每个进程中安装一个钩子并捕获 WM_SETCURSOR 事件,但捕获此消息并不能提供完整的信息。如果有人可以提供帮助,请指导我

【问题讨论】:

你期待什么信息,你得到(或丢失)什么? 我期待光标的类型(例如,当它从箭头变为手形时,或者当它改变大小以调整大小时),我只得到它的位置。我在 loadcursor( ) 我们可以指定一些 ID (IDC_CROSS, IDC_HAND) 来更改光标。因此,如果相同的 id 或等效的东西,我可以进入我的应用程序,那么它就可以达到目的 【参考方案1】:

您可以使用GetCursorGetCursorInfo 获取当前光标的句柄。

问题是要知道句柄指的是哪个游标。我认为没有“反向查找”功能,因此您必须通过将您的句柄与LoadCursor 返回的句柄进行比较以获得不同的可能值来实现它。

幸运的是,文档是这样说的:

LoadCursor 函数仅在未加载游标资源时加载 已加载;否则,它将检索现有的句柄 资源。

【讨论】:

以上是关于在 MFC 中捕获鼠标指针形状更改事件的主要内容,如果未能解决你的问题,请参考以下文章

MFC中静态控件怎样改变鼠标的形状呀?

在Delphi中怎样抓取鼠标形状

MFC如何让鼠标移动到按钮上马上改变鼠标形状为手型

通过鼠标单击选项卡来捕获选项卡更改事件

使用C#改变鼠标的指针形状

MFC编程的时候,改变鼠标光标样式