画鼠标指针图标?

时间:2012-05-30 19:33:00

标签: c++ windows mouse gdi

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

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

2 个答案:

答案 0 :(得分:6)

您可以使用以下代码:

CURSORINFO ci;
GetCursorInfo(&ci);

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

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

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

ICONINFO ii;
GetIconInfo(ci.hCursor, &ii);

答案 1 :(得分:1)

可以这样做:

(1)使用LoadCursor(http://msdn.microsoft.com/en-us/library/aa924571.aspx)从应用程序中获取当前鼠标光标。只需指定NULL和您想要的光标。或者只是加载光标的位图。现在,你有一个位图。

(2)下一步是获取桌面的设备上下文:GetWindowDC(NULL)更多信息:http://msdn.microsoft.com/en-us/library/dd144947%28v=vs.85%29.aspx。这将使您有机会在任何地方绘制桌面

(3)您很可能需要将CreateCompatibleBitmap(http://msdn.microsoft.com/en-us/library/aa922174)应用于(1)处的图像,并在(2)处获得DC

(4)现在,使用一些BitBlt将来自DC获取的位OUT(2)从要放置光标的位置复制到保存图像(你需要创建这些)。

现在,将(3)中获得的图像放在(2)所需位置的桌面DC上。

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

从(1)重启。

这两个以上的链接可能有所帮助:http://www.winprog.org/tutorial/bitmaps.htmlhttp://msdn.microsoft.com/en-us/library/dd183402%28v=vs.85%29.aspx

祝你好运!