У меня есть следующий код, чтобы сделать скриншоты окна:
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);
Это кто-то другой, немного измененный код, так как я не очень знаком с DC и с тем, как окна рисуют вещи на экране.
Когда у меня есть одно окно, слегка закрывающее другое, на скриншотах покрытого окна появляется закрывающее окно, что довольно неудобно. Кроме того, когда окно свернуто, этот код не производит ничего особенного.
Есть ли способ обойти это? Я полагаю, что сделать скриншоты свернутого приложения было бы довольно сложно, но я надеюсь, что получение скриншотов покрытых окон возможно. Возможно, существует другой способ реализации этого, чтобы обойти эти проблемы?