怎么拷贝父窗口一部分到位图(包括父窗口中的子控件)
如何拷贝父窗口一部分到位图(包括父窗口中的子控件)
我用GetParent()->GetDC()获取父窗口的DC,然后BitBlt().但是无法拷贝被其他子窗口控件遮盖的区域。比如我获取了CMainFrame类的DC,现在想拷贝这样的内容,子控件覆盖的地方也要拷贝,而不是单纯的底色。如下

------解决方案--------------------
应该没问题的吧,参考下下面的代码
我用GetParent()->GetDC()获取父窗口的DC,然后BitBlt().但是无法拷贝被其他子窗口控件遮盖的区域。比如我获取了CMainFrame类的DC,现在想拷贝这样的内容,子控件覆盖的地方也要拷贝,而不是单纯的底色。如下
------解决方案--------------------
应该没问题的吧,参考下下面的代码
CPaintDC dc(this);
HWND hWnd= ::FindWindow(NULL,_T("XXX"));
if(hWnd == NULL)
return;
HDC hDC = ::GetWindowDC(hWnd);
if (hDC)
{
HDC hMemDC = ::CreateCompatibleDC(hDC);
if (hMemDC)
{
RECT rc;
::GetWindowRect(hWnd, &rc);
HBITMAP hbitmap = ::CreateCompatibleBitmap(hDC,rc.right-rc.left, rc.bottom-rc.top);
if (hbitmap)
{
::SelectObject(hMemDC, hbitmap);
::PrintWindow(hWnd, hMemDC, 0);
::BitBlt(dc.m_hDC, 0, 0, 400, 400, hMemDC, 0, 0, SRCCOPY);
::DeleteObject(hbitmap);
}
::DeleteObject(hMemDC);
}
::ReleaseDC(hWnd, hDC);
}