2009-10-27 109 views
3

我已經使用以下代碼在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://stackoverflow.com/questions/918990/c-capture-the-mouse-cursor-image – 2009-10-27 05:37:39

+0

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

回答

2

您的BitBlt後,你選擇位圖背出hdcMem之前,你可以這樣做:

​​

上面的代碼計算出如果光標顯示,使用全局光標狀態,因爲你可能會在另一個進程中截取一個窗口(或多個窗口)。然後它從屏幕獲取目標窗口座標進行調整。它獲取有關光標的具體信息,包括其熱點。它計算圖標的繪製位置。最後,它得到光標圖標的實際大小,以便它可以在沒有任何拉伸的情況下繪製它。

唯一的限制,以這種方法,我知道的是:

  • 你沒有得到光標的陰影,如果你有他們啓用。
  • 如果是動畫光標,則只顯示第一幀。據我所知,沒有辦法確定當前幀。