我正在编写一个小型有趣的工具。我希望能够在与原始鼠标不同的位置绘制第二个(或更多)鼠标指针图标,但根据原始鼠标的移动来移动它。
我知道如何跟踪鼠标的移动,但是我不知道如何绘制/重绘鼠标指针;有人能帮忙吗?
CURSORINFO ci;
ci.cbSize = sizeof(CURSORINFO);
GetCursorInfo(&ci);
接下来,您可以调用以下代码绘制光标:
DrawIcon(ContextDC, YourXPosition, YourYPosition, ci.hCursor);
ICONINFO ii;
GetIconInfo(ci.hCursor, &ii);
这可以这样做:
使用 LoadCursor()
从您的应用程序中获取当前鼠标光标。只需指定 NULL 和您想要的光标即可,或者加载一个位图作为光标。现在,您有了一个位图。
下一步是获取您的桌面设备上下文:GetWindowDC(NULL)
。这将使您有机会在桌面的任何位置绘制。
很有可能您需要使用 #1 中的图像和 #2 中获得的 DC 应用 CreateCompatibleBitmap()
。
现在,使用一些 BitBlt()
将位从 #2 中获得的 DC 复制到您想要放置光标的位置的保存图像中(您需要创建这些图像)。
现在,将第3步获得的图像放置在第2步获得的桌面DC上的所需位置。
当用户移动鼠标时,使用#4处保存的数据还原桌面上的图像。释放所有不需要的东西(是的,这是强制性的)。
然后从#1重新开始。
这两个链接可能会有所帮助:
祝你好运!
CURSORINFO
的大小,所以ci.cbSize = sizeof(ci);
。 - Ziriax