VC保存当面某个区域的图片

void ViewReportDlg::CopyScreenToBitmap()
{
CDC *cdc = this->GetDC();
HDC wnd = cdc->GetSafeHdc();
//CClientDC dc(this); CRect rect;
BOOL showMsgTag; //是否要弹出”图像保存成功对话框"
this->GetClientRect(&rect); //获取画布大小 HBITMAP hbitmap = CreateCompatibleBitmap(wnd, rect.right-rect.left, rect. bottom-rect.top); //创建兼容位图 HDC hdc = CreateCompatibleDC(wnd); //创建兼容DC,以便将图像保存为不同的格式
HBITMAP hOldMap = (HBITMAP)SelectObject(hdc,hbitmap);
//将位图选入DC,并保存返回值
BitBlt(hdc,,,rect.right-rect.left,rect.bottom-rect.top,wnd,,,SRCCOPY); //将屏幕DC的图像复制到内存DC中
CImage image;//需要
image.Attach(hbitmap,CImage::DIBOR_DEFAULT); //image.Save(_T("c:\\B.jpg"));//如果文件后缀为.bmp,则保存为为bmp格式
//以下程序用于选择图片保存路径等信息
// 图像保存
HRESULT hResult = image.Save(_T("E:\\4444.bmp"));
if (FAILED(hResult))
MessageBox("保存图像文件失败!");
else
MessageBox("保存图像文件成功!");
image.Detach();
::SelectObject(hdc, hOldMap);//选入上次的返回值
::DeleteDC(hdc);
}
上一篇:工作中的趣事:聊聊ref/out和方法参数的传递机制


下一篇:解决:AppMsg - Warning: calling DestroyWindow in CWnd::~CWnd; OnDestroy or PostNcDestroy in derived class will not be called