我有以下代码来截取一个窗口的屏幕截图:
HDC WinDC;
HDC CopyDC;
HBITMAP hBitmap;
RECT rt;
GetClientRect (hwnd, &rt);
WinDC = GetDC (hwnd);
CopyDC = CreateCompatibleDC (WinDC);
hBitmap = CreateCompatibleBitmap (WinDC,
rt.right - rt.left, //width
rt.bottom - rt.top);//height
SelectObject (CopyDC, hBitmap);
//Copy the window DC to the compatible DC
BitBlt (CopyDC, //destination
0,0,
rt.right - rt.left, //width
rt.bottom - rt.top, //height
WinDC, //source
0, 0,
SRCCOPY);
ReleaseDC(hwnd, WinDC);
ReleaseDC(hwnd, CopyDC);
当一个窗口稍微覆盖另一个窗口时,覆盖窗口会出现在被覆盖窗口的截图上,这有点不方便。另外,当窗口最小化时,此代码不会产生任何有趣的结果。
有什么办法吗?我可以想象,截取一个最小化的应用程序的屏幕截图将是相当困难的,但我希望获得覆盖窗口的屏幕截图是可能的。也许有一种不同的方法来解决这些问题?