抓取屏幕并压缩生成HBITMAP

 1 HBITMAP GetScreenBmp()
 2 {
 3     HWND hwnd = ::GetDesktopWindow();
 4     HDC hsrc = ::GetDC(hwnd);
 5     HDC hmemdc = ::CreateCompatibleDC(hsrc);
 6     RECT rc; ::GetWindowRect(hwnd,&rc);
 7     SIZE sz;sz.cx=rc.right-rc.left;sz.cy=rc.bottom-rc.top;
 8     HBITMAP hbmp = ::CreateCompatibleBitmap(hsrc,sz.cx,sz.cy);
 9     HGDIOBJ holdbmp = ::SelectObject(hmemdc,hbmp);
10     ::BitBlt(hmemdc,0,0,sz.cx,sz.cy,hsrc,rc.left,rc.top,SRCCOPY);
11     ::SelectObject(hmemdc,holdbmp);
12     ::DeleteObject(hmemdc);
13     ::ReleaseDC(hwnd,hsrc);
14     return hbmp;
15 }

 

posted @ 2017-10-27 09:33  风的哀伤  阅读(671)  评论(0编辑  收藏  举报