关闭

VC实现对屏幕的截取

标签: null
449人阅读 评论(0) 收藏 举报

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;

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:84069次
    • 积分:1455
    • 等级:
    • 排名:千里之外
    • 原创:58篇
    • 转载:8篇
    • 译文:0篇
    • 评论:11条
    文章分类
    最新评论