如何在Windows中获取鼠标光标类型(默认,手动,等待,调整大小等)?

时间:2017-12-27 00:51:16

标签: windows winapi

我希望在鼠标光标从箭头变为沙漏等时收到通知。

到目前为止,我设法获得鼠标位置更改事件的通知,但我无法弄清楚如何获取光标类型。看起来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

                        );      
    }

1 个答案:

答案 0 :(得分:1)

首先,您对GetCursorInfo()的来电是错误的。你正在传递一个未初始化的指针。它应该是这样的:

CURSORINFO curInfo = {};
curInfo.cbSize = sizeof(curInfo);
GetCursorInfo(&curInfo);

其次,CURSORINFO有一个hCursor字段。您可以将其与LoadCursor() / LoadImage()的返回值进行比较,以查看是否正在使用标准游标。但是,您必须单独比较每个标准光标。