VC实现对屏幕的截取

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值