HBITMAP CEspDlg::CopyScreenToBitmap(LPRECT lpRect)
{
HDC hScrDC,hMemDC;//屏幕和内存设备描述表
HBITMAP hBitmap,hOldBitmap;//位图句柄
int nX,nY,nX2,nY2;//选定区域坐标
int nWidth,nHeight;//位图宽度和高度
int xScrn,yScrn;
if(IsRectEmpty(lpRect))
return NULL;
//为屏幕创建设备描述表
hScrDC=CreateDC("DISPLAY",NULL,NULL,NULL);
//为屏幕设备描述表创建兼容的内存设备描述表
hMemDC=CreateCompatibleDC(hScrDC);
//获得选定区域坐标
nX=lpRect->left;
nY=lpRect->top;
nX2=lpRect->right;
nY2=lpRect->bottom;
//获得屏幕分辨率
xScrn=GetDeviceCaps(hScrDC,HORZRES);
yScrn=GetDeviceCaps(hScrDC,VERTRES);
nWidth=nX2-nX;
nHeight=nY2-nY;
//创建一个与屏幕设备描述表兼容的位图
hBitmap=CreateCompatibleBitmap(hScrDC,nWidth,nHeight);
//把新位衅选到内存设备描述表中
hOldBitmap=(HBITMAP)SelectObject(hMemDC,hBitmap);
//把屏幕设备描述表拷贝到内存设备描述表中
BitBlt(hMemDC,0,0,nWidth,nHeight,hScrDC,nX,nY,SRCCOPY);
//得到屏幕位图句柄
hBitmap=(HBITMAP)SelectObject(hMemDC,hOldBitmap);
DeleteDC(hScrDC);
DeleteDC(hMemDC);
return hBitmap;
}