VS2008 MFC截取整个屏幕并保存为jpg格式

 1 void CMainFrame::OnSavejpg()
 2 {
 3     // TODO: 在此添加命令处理程序代码
 4     HWND hwnd = this->GetSafeHwnd();    //得到窗口句柄
 5     HDC hDC = ::GetWindowDC(hwnd);//获取DC     指定的窗口的设备环境
 6   
 7     
 8     RECT rect;     
 9     ::GetWindowRect(hwnd, &rect);//获取屏幕大小  该函数返回指定窗口的边框矩形的尺寸。该尺寸以相对于屏幕坐标左上角的屏幕坐标给出。  
10     HDC hDCMem = ::CreateCompatibleDC(hDC);//创建兼容DC   创建一个与指定设备兼容的内存设备上下文环境(DC)。
11                                             
12     
13     HBITMAP hBitMap = ::CreateCompatibleBitmap(hDC, rect.right-rect.left, rect.bottom-rect.top);//该函数创建与指定的设备环境相关的设备兼容的位图。  
14                                                                                                 
15     HBITMAP hOldMap = (HBITMAP)::SelectObject(hDCMem, hBitMap);//将位图选入DC,并保存返回值     
16     
17     ::BitBlt(hDCMem, 0, 0, rect.right-rect.left, rect.bottom-rect.top, hDC, 0, 0, SRCCOPY);//将屏幕DC的图象拷贝到内存DC中     
18     
19     CImage image;//须要#include <atlimage.h>    
20     image.Attach(hBitMap);     
21     image.Save(_T("c://aaa.jpg"));//假设文件后缀为.bmp,则保存为为bmp格式     
22     image.Detach();     
23     
24     ::SelectObject(hDCMem, hOldMap);//选入上次的返回值     
25     
26     //释放     
27     ::DeleteObject(hBitMap);     
28     ::DeleteDC(hDCMem);     
29     ::DeleteDC(hDC);  
30 }

运行:

posted @ 2018-01-29 11:01  小雨滴答  阅读(320)  评论(0编辑  收藏  举报