mfc 截图直接界面并保存
时间: 2023-08-16 22:04:23 浏览: 173
mfc截图,区域截图,截图保存
可以使用 MFC 中的 CDC 类来实现截图功能。以下是一个简单的示例代码,可以将指定窗口的界面截图保存为 BMP 文件:
```cpp
void CaptureWindow(HWND hWnd, LPCTSTR lpFileName)
{
// 获取窗口客户区的大小
RECT rect;
::GetClientRect(hWnd, &rect);
int nWidth = rect.right - rect.left;
int nHeight = rect.bottom - rect.top;
// 创建一个兼容的 DC
CDC dc;
dc.CreateCompatibleDC(NULL);
// 创建一个位图
CBitmap bmp;
bmp.CreateCompatibleBitmap(&dc, nWidth, nHeight);
// 将位图选入 DC
CBitmap* pOldBmp = dc.SelectObject(&bmp);
// 将窗口内容绘制到 DC 中
::PrintWindow(hWnd, dc.GetSafeHdc(), PW_CLIENTONLY);
// 将位图保存为 BMP 文件
CImage image;
image.Attach((HBITMAP) bmp.Detach());
image.Save(lpFileName, Gdiplus::ImageFormatBMP);
// 恢复 DC
dc.SelectObject(pOldBmp);
}
```
在调用该函数时,需要传递要截图的窗口句柄和保存的文件名。例如:
```cpp
CaptureWindow(::GetDesktopWindow(), _T("screenshot.bmp"));
```
这个例子中将会截取整个桌面,并将截图保存为 "screenshot.bmp" 文件。
阅读全文