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