用VC进行屏幕截取编程

用VC进行屏幕截取编程

ID:41033147

大小:37.50 KB

页数:5页

时间:2019-08-14

用VC进行屏幕截取编程_第1页
用VC进行屏幕截取编程_第2页
用VC进行屏幕截取编程_第3页
用VC进行屏幕截取编程_第4页
用VC进行屏幕截取编程_第5页
资源描述:

《用VC进行屏幕截取编程》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、用VC进行屏幕截取编程潘小龙顾时明屏幕截取是令人比较感兴趣的事情.虽然现在有不少应用程序如HYPERSNAP等可以用来截取你所喜欢的屏幕画面,但是如果能把这个功能加到自己的程序中,就更能利用它强大的作用.下面用VC来逐步介绍在Windows95下的实现过程.首先我们要确定屏幕截取的区域,用LPRECT结构来定义.可以截取一个窗口,或整个屏幕.以下代码把选定的屏幕区域拷贝到位图中.HBITMAPCopyScreenToBitmap(LPRECTlpRect)//lpRect代表选定区域{HDChScrDC,hMemDC;//屏幕和内存设备描述表HBITMAPhBitm

2、ap,hOldBitmap;//位图句柄intnX,nY,nX2,nY2;//选定区域坐标intnWidth,nHeight;//位图宽度和高度intxScrn,yScrn;//屏幕分辨率//确保选定区域不为空矩形if(IsRectEmpty(lpRect))returnNULL;//为屏幕创建设备描述表hScrDC=CreateDC("DISPLAY",NULL,NULL,NULL);//为屏幕设备描述表创建兼容的内存设备描述表hMemDC=CreateCompatibleDC(hScrDC);//获得选定区域坐标nX=lpRect->left;nY=lpRect

3、->top;nX2=lpRect->right;nY2=lpRect->bottom;//获得屏幕分辨率xScrn=GetDeviceCaps(hScrDC,HORZRES);yScrn=GetDeviceCaps(hScrDC,VERTRES);//确保选定区域是可见的if(nX<0)nX=0;if(nY<0)nY=0;if(nX2>xScrn)nX2=xScrn;if(nY2>yScrn)nY2=yScrn;nWidth=nX2-nX;nHeight=nY2-nY;//创建一个与屏幕设备描述表兼容的位图hBitmap=CreateCompatibleBitmap

4、(hScrDC,nWidth,nHeight);//把新位图选到内存设备描述表中hOldBitmap=SelectObject(hMemDC,hBitmap);//把屏幕设备描述表拷贝到内存设备描述表中BitBlt(hMemDC,0,0,nWidth,nHeight,hScrDC,nX,nY,SRCCOPY);//得到屏幕位图的句柄hBitmap=SelectObject(hMemDC,hOldBitmap);//清除DeleteDC(hScrDC);DeleteDC(hMemDC);//返回位图句柄returnhBitmap;}得到屏幕位图句柄以后,我们可以把屏幕

5、内容粘贴到剪贴板上.if(OpenClipboard(hWnd))//hWnd为程序窗口句柄{//清空剪贴板EmptyClipboard();//把屏幕内容粘贴到剪贴板上,hBitmap为刚才的屏幕位图句柄SetClipboardData(CF_BITMAP,hBitmap);//关闭剪贴板CloseClipboard();}我们也可以把屏幕内容以位图格式存到磁盘文件上.intSaveBitmapToFile(HBITMAPhBitmap,LPSTRlpFileName)//hBitmap为刚才的屏幕位图句柄{//lpFileName为位图文件名HDChDC;//设

6、备描述表intiBits;//当前显示分辨率下每个像素所占字节数WORDwBitCount;//位图中每个像素所占字节数//定义调色板大小,位图中像素字节大小,位图文件大小,写入文件字节数DWORDdwPaletteSize=0,dwBmBitsSize,dwDIBSize,dwWritten;BITMAPBitmap;//位图属性结构BITMAPFILEHEADERbmfHdr;//位图文件头结构BITMAPINFOHEADERbi;//位图信息头结构LPBITMAPINFOHEADERlpbi;//指向位图信息头结构HANDLEfh,hDib,hPal,hOld

7、Pal=NULL;//定义文件,分配内存句柄,调色板句柄//计算位图文件每个像素所占字节数hDC=CreateDC("DISPLAY",NULL,NULL,NULL);iBits=GetDeviceCaps(hDC,BITSPIXEL)*GetDeviceCaps(hDC,PLANES);DeleteDC(hDC);if(iBits<=1)wBitCount=1;elseif(iBits<=4)wBitCount=4;elseif(iBits<=8)wBitCount=8;elseif(iBits<=24)wBitCount=24;//计算调色板大小if(wBi

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。