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,0,0,rect.right-rect.left,rect.bottom-rect.top,wnd,0,0,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); }