【发布时间】:2017-12-27 00:51:15
【问题描述】:
我想在鼠标光标从箭头变为沙漏等时收到通知。
到目前为止,我设法收到有关鼠标位置更改事件的通知,但我不知道如何获取光标类型。看起来 PCURSORINFO 结构不包含有关游标类型的任何信息。
这是我到现在为止的代码:
static LRESULT CALLBACK WinEventCallback(_In_ int nCode,
_In_ WPARAM wParam,
_In_ LPARAM lParam)
{
PCURSORINFO curInfo;
curInfo->cbSize = sizeof(curInfo);
GetCursorInfo(curInfo);
}
void MouseCursorHook::setMouseCursorHook()
{
HHOOK evntHook = SetWindowsHookEx(WH_MOUSE_LL,
WinEventCallback,
GetModuleHandle(0),
0
);
}
【问题讨论】:
-
由于任何应用程序都可以免费使用自定义光标(很多都这样做),您希望为它们获得什么类型的光标?大多数应用程序不关心当前游标类型是什么。当你想改变光标时,你存储当前光标,设置你想要的光标,然后当你完成后将它设置回原来的光标,current 和 new 和 original 都是你自己建立的游标。我不知道有任何全局功能来检索 current 一个,因为可能有几十个 current 一个,每个窗口控件一个。
-
@KenWhite 我想获得当前可见的 Windows 内置光标类型,即使没有加载其他窗口,例如仅加载 Windows 桌面。我看到有一些常量,如 IDC_HAND、IDC_ARROW,在这里定义:msdn.microsoft.com/en-us/library/windows/desktop/…。
-
标题和问题正文询问不同的事情。你真正需要什么?虽然这听起来像是XY Problem,但也请解释一下您最终要完成的工作。
-
@IInspectable 我在问是否有办法在鼠标光标类型更改时从 Windows 操作系统获取通知。如果这是不可能的,那么获取光标类型的最佳方法是什么。我提供了一些与我目前所做的相关的代码。
-
你还没有回答,你最终想要完成什么。了解和了解您是在实施适当的解决方案还是走错了路,这一点很重要。