使用BitBlt捕获Window的内容

时间:2014-01-31 12:18:08

标签: c++ windows winapi screenshot

我试图捕获一个窗口(Windows 7),由于某种原因似乎无法捕获所选窗口的非客户区域。

我可以捕捉整个屏幕然后剪掉有趣的部分,但是如果所选择的窗口被另一个窗口遮挡,我会得到一些我不想要的东西。

捕获对于客户区域工作正常,我想知道是否有办法获得NC区域。

我正在使用以下代码

CDC* pDc=GetDC();

pDc->SelectStockObject(BLACK_PEN);
pDc->SelectStockObject(BLACK_PEN);

pDc->Rectangle(0,0,400,400);

HWND hSrcWnd=(HWND)0x00071256;
HDC hCalDC=::GetDCEx(hSrcWnd,NULL,DCX_WINDOW);
RECT rtWindow;
::GetWindowRect(hSrcWnd,&rtWindow);

::StretchBlt(pDc->GetSafeHdc(),0,0,400,400,hCalDC,0,0,rtWindow.right-rtWindow.left,rtWindow.bottom-rtWindow.top,SRCCOPY);
::ReleaseDC(hSrcWnd,hCalDC);
ReleaseDC(pDc);

感谢。

0 个答案:

没有答案