5

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

我知道如何跟踪鼠标的移动,但我不知道如何绘制/重绘鼠标指针;谁能帮忙?

4

2 回答 2

7

您可以使用以下代码:

CURSORINFO ci;
ci.cbSize = sizeof(CURSORINFO);
GetCursorInfo(&ci);

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

DrawIcon(ContextDC, YourXPosition, YourYPosition, ci.hCursor);

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

ICONINFO ii;
GetIconInfo(ci.hCursor, &ii);
于 2012-05-30T19:56:58.727 回答
1

这可以这样做:

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

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

  3. 您很有可能需要CreateCompatibleBitmap()在#1 处申请图像,并在#2 处获得 DC。

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

现在,将#3得到的图像放到#2得到的Desktop DC上你想要的位置。

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

并从#1 重新开始。

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

位图、设备上下文和 BitBlt

捕获图像

祝你好运!

于 2012-05-30T20:14:21.500 回答