// 函数说明: bFull如果是真,则截取整个屏幕否则只截取活动窗口.strPath是保存图片的路径.// 如果函数成功,则将文件保存在指定的路径,格式为PNGBOOL CaptureScreen(BOOL bFull, CString strPath)...{ CImage image; CWnd* pWnd; CRect rect; BOOL bStat; if(bFull) pWnd = CWnd::GetDesktopWindow(); else pWnd = CWnd::GetActiveWindow(); ASSERT(pWnd); if(pWnd == NULL) return FALSE; CWindowDC winDC(pWnd); pWnd->GetWindowRect(&rect); int nBPP = winDC.GetDeviceCaps(BITSPIXEL) * winDC.GetDeviceCaps(PLANES); if(nBPP < 24) nBPP = 24; bStat = image.Create(rect.Width(), rect.Height(), nBPP); ASSERT(bStat); if(!bStat) return FALSE; CImageDC imageDC(image); ::BitBlt(imageDC, 0, 0, rect.Width(), rect.Height(), winDC, 0, 0, SRCCOPY); CString strFull = MakeFilename(strPath); HRESULT hr = image.Save(strFull); if(FAILED(hr)) ...{ TRACE("Couldn't Save File: %s, %x ", (LPCTSTR)strFull, hr); return FALSE; } return TRUE;} // 函数说明:结合路径,自动产生一个文件名CString MakeFilename(CString& strPath)...{ CString strRet(strPath); static UINT i=0; if(strRet.Right(1) != "/") strRet += "/"; strRet.AppendFormat("%03.3d.png", i++); return strRet;} // 引用方法:CaptureScreen(TRUE, "c:/");