// lpRect 为截取的区域 // by lymking@hotmail.com HBITMAP CopyScrToBitmap(LPRECT lpRect) { HDC hScrDC=0, hMemDC; HBITMAP hBitmap, hOldBitmap; //int nX,nY,xX2,nY2; // bitmap width&height int nWidth, nHeight; // screen resolution int xScrn, yScrn; // makesure the rectangle not NULL if (IsRectEmpty(lpRect)) { return NULL; } // create desktop screen dc hScrDC = GetDesktopWindow()->GetDC()->m_hDC;/*CreateDC(_T("DISPLAY"), NULL, NULL, NULL);*/ int iOK =1; if (hScrDC == NULL) { iOK = 0; } // create mem dc hMemDC = CreateCompatibleDC(hScrDC); // get resolutions xScrn = GetDeviceCaps(hScrDC, HORZRES); yScrn = GetDeviceCaps(hScrDC, VERTRES); if(lpRect->left < 0) lpRect->left = 0; if (lpRect->top < 0) lpRect->top = 0; // 屏幕 nWidth = (lpRect->right - lpRect->left); nHeight = (lpRect->bottom - lpRect->top); // create bitmap hBitmap = CreateCompatibleBitmap(hScrDC, nWidth, nHeight); // select new bitmap hOldBitmap = (HBITMAP)SelectObject(hMemDC, hBitmap); // copy scr dc to mem dc BitBlt(hMemDC, 0,0, nWidth, nHeight, hScrDC, 0, 0, SRCCOPY); // get bitmap handle hBitmap = (HBITMAP)SelectObject(hMemDC, hOldBitmap); // clean DeleteDC(hScrDC); DeleteDC(hMemDC); return hBitmap; }

评论