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

问题描述 投票:0回答:1

当鼠标光标从箭头变为沙漏等时,我想收到通知。

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

                        );      
    }
windows winapi
1个回答
1
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.