15,979
社区成员
发帖
与我相关
我的任务
分享
CWnd myWnd;
HWND hWnd = ::FindWindow("GxWindowClass", tittle); //窗口w的标题
myWnd.Attach(hWnd);
CRect rect;
myWnd.GetClientRect(&rect);
CDC memCDC;
memCDC.CreateCompatibleDC(myWnd.GetDC());
myWnd.PrintWindow(&memCDC, PW_CLIENTONLY);
HBITMAP hbmp = CreateCompatibleBitmap(memCDC.GetSafeHdc(), rect.right - rect.left, rect.bottom - rect.top);
CImage image;
image.Attach(hbmp);
image.Save("1.bmp" );
image.Detach();
void CaptureWindow(HWND hWnd)
{
HDC hDC = ::GetWindowDC(hWnd);
ASSERT(hDC);
HDC hdcMem = ::CreateCompatibleDC(hDC);
ASSERT(hdcMem);
RECT rc;
::GetWindowRect(hWnd, &rc);
HBITMAP hbitmap = ::CreateCompatibleBitmap(hDC, rc.right - rc.left, rc.bottom - rc.top);
ASSERT(hbitmap);
HBITMAP hOldBmp = (HBITMAP)::SelectObject(hdcMem, hbitmap);
::PrintWindow(hWnd, hdcMem, 0);
::OpenClipboard(NULL);
::EmptyClipboard();
::SetClipboardData(CF_BITMAP, hbitmap);
::CloseClipboard();
::SelectObject(hdcMem, hOldBmp);
::DeleteObject(hbitmap);
::DeleteObject(hdcMem);
::ReleaseDC(hWnd, hDC);
}