我有一个带儿童的主窗口。我需要以编程方式截取屏幕截图,然后在我的主窗口上裁剪并绘制它们。我这样做的方式是:获取运行OpenGL的子窗口的屏幕截图(Windows)
HDC hDC = GetWindowDC(hWnd);
HDC memDC = CreateCompatibleDC(hDC);
HBITMAP memBM = CreateCompatibleBitmap(hDC, Width, Height);
HBITMAP OldBM = (HBITMAP)::SelectObject(memDC, memBM);
BitBlt(memDC, 0, 0, Width, Height , hDC, BEGINX, BEGINY, SRCCOPY);
int Bpp = GetDeviceCaps(hDC,BITSPIXEL);
int size = Bpp/8 * (Width * Height);
BYTE *lpBits = new BYTE[size];
GetBitmapBits(memBM, size, lpBits);
但这并没有捕捉到子窗口的OpenGL的部分,而不是它只是绘制空白在OGL渲染被认为是该地区。
显然,如果源窗口是子项目,则无法使用DWM缩略图来实现。我烦了。 – 2010-01-27 18:46:54