画鼠标指针图标?

Vis*_*ell 5 c++ windows mouse gdi

我正在编写一些有趣的小工具.我希望能够在与原始鼠标不同的位置绘制第二个(或更多)鼠标指针图标,但是根据原始鼠标的移动来移动它.

我知道如何跟踪鼠标的移动,但我不知道如何绘制/重绘鼠标指针; 有人可以帮忙吗?

小智 6

您可以使用以下代码:

CURSORINFO ci;
GetCursorInfo(&ci);
Run Code Online (Sandbox Code Playgroud)

接下来,您可以通过调用来绘制游标:

DrawIcon(ContextDC, YourXPosition, YourYPosition, ci.hCursor);
Run Code Online (Sandbox Code Playgroud)

如果您需要有关游标的其他信息,例如热点,请检查ICONINFO结构:

ICONINFO ii;
GetIconInfo(ci.hCursor, &ii);
Run Code Online (Sandbox Code Playgroud)


Fer*_*eak 1

这可以这样做:

  1. 使用 . 从应用程序中获取当前鼠标光标LoadCursor()。只需指定 NULL 和您想要的游标即可。或者只是加载光标的位图。现在,您有了一个位图。

  2. 下一步是获取桌面的设备上下文:GetWindowDC(NULL)。这将使您有机会在任何地方的桌面上绘图。

  3. 您很有可能需要将CreateCompatibleBitmap()#2 处获得的 DC 应用于 #1 处的图像。

  4. 现在,使用 someBitBlt()将 #2 处获得的 DC 中的位 OUT 从您想要放置光标的位置复制到保存图像中(您将需要创建这些图像)。

现在,将#3 获得的图像放到#2 获得的桌面DC 上您想要的位置。

当用户移动鼠标时,使用#4 处保存的数据恢复桌面上的图像。释放所有你不需要的东西(是的,这是强制性的)。

并从#1 重新开始。

这两个链接可能会有所帮助:

位图、设备上下文和 BitBlt

捕捉图像

祝你好运!