使用鼠标光标捕获屏幕截图

问题描述:

我已经使用以下代码在Windows上获取屏幕截图。使用鼠标光标捕获屏幕截图

hdcMem = CreateCompatibleDC (hdc) ; 
int cx = GetDeviceCaps (hdc, HORZRES); 
int cy = GetDeviceCaps (hdc, VERTRES); 
HBITMAP hBitmap(NULL); 
hBitmap = CreateCompatibleBitmap (hdc, cx, cy) ; 
SelectObject (hdcMem, hBitmap) ; 
BitBlt(hdcMem, 0, 0, cx, cy, hdc, 0, 0, SRCCOPY); 

但是,鼠标光标不显示。

我怎么能得到光标?还是有一个图书馆可以做到这一点?

在此先感谢。

+1

请问这有帮助吗? http://*.com/questions/918990/c-capture-the-mouse-cursor-image – 2009-10-27 05:37:39

+0

太棒了!谢谢,这很好。 – KenC 2009-10-28 00:06:45

您的BitBlt后,你选择位图背出hdcMem之前,你可以这样做:

​​

上面的代码计算出如果光标显示,使用全局光标状态,因为你可能会在另一个进程中截取一个窗口(或多个窗口)。然后它从屏幕获取目标窗口坐标进行调整。它获取有关光标的具体信息,包括其热点。它计算图标的绘制位置。最后,它得到光标图标的实际大小,以便它可以在没有任何拉伸的情况下绘制它。

唯一的限制,以这种方法,我知道的是:

  • 你没有得到光标的阴影,如果你有他们启用。
  • 如果是动画光标,则只显示第一帧。据我所知,没有办法确定当前帧。