我有一个带孩子的主窗户.我需要以编程方式截取屏幕截图以在我的主窗口上裁剪并绘制它们.我这样做的方式是:
HDC hDC = GetWindowDC(hWnd); HDC memDC = CreateCompatibleDC(hDC); HBITMAP memBM = CreateCompatibleBitmap(hDC,Width,Height); HBITMAP OldBM = (HBITMAP)::SelectObject(memDC,memBM ); BitBlt(memDC,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渲染应该是的区域中绘制空白.
我记得几年前当我试图屏幕抓取一个视频并且只是获得视频的黑色区域时,我遇到了类似的问题.通过减少视频驱动程序上的硬件加速设置(在XP上:右键单击桌面>属性>设置>高级>疑难解答)来解决它.
原文链接:https://www.f2er.com/windows/371722.html