VC++截图编程:如何能完整地截图?要求是能够截取层级窗口的方法。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VC++截图编程:如何能完整地截图?要求是能够截取层级窗口的方法。相关的知识,希望对你有一定的参考价值。
现在流行一种用全局DC的截图方法:
CDC *pDc=this->GetDC();
hscreendc=::GetDC(0);
hmemdc=CreateCompatibleDC(hscreendc);
hbitmap=CreateCompatibleBitmap(hscreendc,BMCX,BMCY);
SelectObject(hmemdc,hbitmap);
BitBlt(hmemdc,0,0,BMCX,BMCY,hscreendc,0,0,SRCCOPY);//将屏幕内容保存至内存DC
::ReleaseDC(NULL,hscreendc); hscreendc=NULL;
dwRtn= GetBitmapBits(hbitmap,dwOriginBufLen,(LPVOID)pBufOrigin);//将图像的像素信息读取进内存
这种用全局DC方法固然能截图,但是对于层级窗体(调用过 SetLayeredWindowAttributes 的窗体,窗体能具有半透明效果)却不起作用,而PrintScreen 键则可以截取到层级窗体。说明全局DC截图法与 printScreen 键的截图功能是不同的,现在想问问怎样才能做到类似PrintScreen 键的截图功能,即最正规的截图方法。
注意:不能模拟按printScreen键改动剪贴板。
完全解决疑问可追加30分!
改成 SRCCOPY | CAPTUREBLT
原因和细节请参看MSDN
以上是关于VC++截图编程:如何能完整地截图?要求是能够截取层级窗口的方法。的主要内容,如果未能解决你的问题,请参考以下文章