45fan.com - 路饭网

搜索: 您的位置主页 > 网络频道 > 阅读资讯:怎么样使用ScreenBase实现截取屏幕任意区域?

怎么样使用ScreenBase实现截取屏幕任意区域?

2016-09-04 10:10:45 来源:www.45fan.com 【

怎么样使用ScreenBase实现截取屏幕任意区域?

//========================================================================

//TITLE:

// ScreenBase实现屏幕任意区域的截取

//AUTHOR:

// norains

//DATE:

// Tuesday 16-January -2007

//Environment:

//EVC4.0 + Standard SDK

//========================================================================

1.ScreenBase 源码

ScreenBase为自己写代码方便而封装的一个API类,该类的的主要功能是截取屏幕任意区域的图像,并将之保存为BMP文件.

源代码如下:

怎么样使用ScreenBase实现截取屏幕任意区域?

怎么样使用ScreenBase实现截取屏幕任意区域?怎么样使用ScreenBase实现截取屏幕任意区域?//////////////////////////////////////////////////////////////////////

怎么样使用ScreenBase实现截取屏幕任意区域?//ScreenBase.h:interfacefortheCScreenBaseclass.

怎么样使用ScreenBase实现截取屏幕任意区域?怎么样使用ScreenBase实现截取屏幕任意区域?//////////////////////////////////////////////////////////////////////

怎么样使用ScreenBase实现截取屏幕任意区域?#ifndefSCREENBASE_H

怎么样使用ScreenBase实现截取屏幕任意区域?
#defineSCREENBASE_H

怎么样使用ScreenBase实现截取屏幕任意区域?//-------------------------------------------------------------------

怎么样使用ScreenBase实现截取屏幕任意区域?

怎么样使用ScreenBase实现截取屏幕任意区域?classCScreenBase

怎么样使用ScreenBase实现截取屏幕任意区域?怎么样使用ScreenBase实现截取屏幕任意区域?
{

怎么样使用ScreenBase实现截取屏幕任意区域?
public:

怎么样使用ScreenBase实现截取屏幕任意区域?
voidCopyScreen();

怎么样使用ScreenBase实现截取屏幕任意区域?
voidSaveFile(TCHAR*pszPath);

怎么样使用ScreenBase实现截取屏幕任意区域?CScreenBase();

怎么样使用ScreenBase实现截取屏幕任意区域?
virtual~CScreenBase();

怎么样使用ScreenBase实现截取屏幕任意区域?
voidInitialize(constRECT*prcScr=NULL);

怎么样使用ScreenBase实现截取屏幕任意区域?

怎么样使用ScreenBase实现截取屏幕任意区域?
protected:

怎么样使用ScreenBase实现截取屏幕任意区域?
voidDestroy();

怎么样使用ScreenBase实现截取屏幕任意区域?typedef
struct

怎么样使用ScreenBase实现截取屏幕任意区域?怎么样使用ScreenBase实现截取屏幕任意区域?{

怎么样使用ScreenBase实现截取屏幕任意区域?HDChDC;
//TheDCsavethescreedDC

怎么样使用ScreenBase实现截取屏幕任意区域?HGDIOBJhOldSel;//TheoldobjectofsaveDC

怎么样使用ScreenBase实现截取屏幕任意区域?HBITMAPhBmpSel;//Theselectedbitmap

怎么样使用ScreenBase实现截取屏幕任意区域?}
SAVEDCINFO,*LPSAVEDCINFO;

怎么样使用ScreenBase实现截取屏幕任意区域?SAVEDCINFOm_SaveDCInfo;

怎么样使用ScreenBase实现截取屏幕任意区域?

怎么样使用ScreenBase实现截取屏幕任意区域?typedef
struct

怎么样使用ScreenBase实现截取屏幕任意区域?怎么样使用ScreenBase实现截取屏幕任意区域?{

怎么样使用ScreenBase实现截取屏幕任意区域?BYTE
*lpBitmapBits;//Pointertoavariablethatreceivesapointertothelocationofthedevice-independentbitmap'sbitvalues

怎么样使用ScreenBase实现截取屏幕任意区域?BITMAPINFObitMapInfo;//Thesavebitmapinfo

怎么样使用ScreenBase实现截取屏幕任意区域?}
SAVEBITMAPINFO,*LPSAVEBITMAPINFO;

怎么样使用ScreenBase实现截取屏幕任意区域?SAVEBITMAPINFOm_SaveBitmapInfo;

怎么样使用ScreenBase实现截取屏幕任意区域?

怎么样使用ScreenBase实现截取屏幕任意区域?
voidSaveFile(LPSAVEBITMAPINFOlpSaveBitmapInfo,TCHAR*pszPath);

怎么样使用ScreenBase实现截取屏幕任意区域?
voidInitializeSaveDC(LPSAVEDCINFOlpSaveDCInfo,LPSAVEBITMAPINFOlpSaveBitmapInfo,constRECT*prcSave);

怎么样使用ScreenBase实现截取屏幕任意区域?
voidDestroySaveDC(LPSAVEDCINFOlpSaveDCInfo,LPSAVEBITMAPINFOlpSaveBitmapInfo);

怎么样使用ScreenBase实现截取屏幕任意区域?
voidCopyScreenDC(HDC*pHdcDest,constLPSAVEBITMAPINFOlpSaveBitmapInfo,constRECT*prcSrc);

怎么样使用ScreenBase实现截取屏幕任意区域?

怎么样使用ScreenBase实现截取屏幕任意区域?RECTm_rcSave;
//Theareaforsaving

怎么样使用ScreenBase实现截取屏幕任意区域?HDCm_hScrDC;//ThehandleDCofscreen

怎么样使用ScreenBase实现截取屏幕任意区域?}
;

怎么样使用ScreenBase实现截取屏幕任意区域?

怎么样使用ScreenBase实现截取屏幕任意区域?

怎么样使用ScreenBase实现截取屏幕任意区域?
//--------------------------------------------------------------------------

怎么样使用ScreenBase实现截取屏幕任意区域?#endif//!definedSCREENBASE_H

怎么样使用ScreenBase实现截取屏幕任意区域?

怎么样使用ScreenBase实现截取屏幕任意区域?
怎么样使用ScreenBase实现截取屏幕任意区域?

怎么样使用ScreenBase实现截取屏幕任意区域?怎么样使用ScreenBase实现截取屏幕任意区域?//////////////////////////////////////////////////////////////////////

怎么样使用ScreenBase实现截取屏幕任意区域?//ScreenBase.cpp:implementationoftheCScreenBaseclass.

怎么样使用ScreenBase实现截取屏幕任意区域?怎么样使用ScreenBase实现截取屏幕任意区域?//////////////////////////////////////////////////////////////////////

怎么样使用ScreenBase实现截取屏幕任意区域?

怎么样使用ScreenBase实现截取屏幕任意区域?#include"stdafx.h"

怎么样使用ScreenBase实现截取屏幕任意区域?#include"ScreenBase.h"

怎么样使用ScreenBase实现截取屏幕任意区域?

怎么样使用ScreenBase实现截取屏幕任意区域?怎么样使用ScreenBase实现截取屏幕任意区域?
//////////////////////////////////////////////////////////////////////

怎么样使用ScreenBase实现截取屏幕任意区域?//Construction/Destruction

怎么样使用ScreenBase实现截取屏幕任意区域?怎么样使用ScreenBase实现截取屏幕任意区域?//////////////////////////////////////////////////////////////////////

怎么样使用ScreenBase实现截取屏幕任意区域?

怎么样使用ScreenBase实现截取屏幕任意区域?CScreenBase::CScreenBase()

怎么样使用ScreenBase实现截取屏幕任意区域?怎么样使用ScreenBase实现截取屏幕任意区域?
{

怎么样使用ScreenBase实现截取屏幕任意区域?memset(
&m_rcSave,0,sizeof(m_rcSave));

怎么样使用ScreenBase实现截取屏幕任意区域?m_hScrDC
=NULL;

怎么样使用ScreenBase实现截取屏幕任意区域?}

怎么样使用ScreenBase实现截取屏幕任意区域?

怎么样使用ScreenBase实现截取屏幕任意区域?CScreenBase::
~CScreenBase()

怎么样使用ScreenBase实现截取屏幕任意区域?怎么样使用ScreenBase实现截取屏幕任意区域?
{

怎么样使用ScreenBase实现截取屏幕任意区域?Destroy();

怎么样使用ScreenBase实现截取屏幕任意区域?}

怎么样使用ScreenBase实现截取屏幕任意区域?

怎么样使用ScreenBase实现截取屏幕任意区域?
//----------------------------------------------------------------------

怎么样使用ScreenBase实现截取屏幕任意区域?
//Description:

怎么样使用ScreenBase实现截取屏幕任意区域?
//DestroythesaveDC

怎么样使用ScreenBase实现截取屏幕任意区域?
//--------------------------------------------------------------------

怎么样使用ScreenBase实现截取屏幕任意区域?voidCScreenBase::DestroySaveDC(LPSAVEDCINFOlpSaveDCInfo,LPSAVEBITMAPINFOlpSaveBitmapInfo)

怎么样使用ScreenBase实现截取屏幕任意区域?怎么样使用ScreenBase实现截取屏幕任意区域?
{

怎么样使用ScreenBase实现截取屏幕任意区域?
if(lpSaveDCInfo->hDC!=NULL&&lpSaveDCInfo->hOldSel!=NULL)

怎么样使用ScreenBase实现截取屏幕任意区域?怎么样使用ScreenBase实现截取屏幕任意区域?
{

怎么样使用ScreenBase实现截取屏幕任意区域?SelectObject(lpSaveDCInfo
->hDC,lpSaveDCInfo->hOldSel);

怎么样使用ScreenBase实现截取屏幕任意区域?}

怎么样使用ScreenBase实现截取屏幕任意区域?

怎么样使用ScreenBase实现截取屏幕任意区域?
if(lpSaveDCInfo->hDC!=NULL)

怎么样使用ScreenBase实现截取屏幕任意区域?怎么样使用ScreenBase实现截取屏幕任意区域?
{

怎么样使用ScreenBase实现截取屏幕任意区域?DeleteDC(lpSaveDCInfo
->hDC);

怎么样使用ScreenBase实现截取屏幕任意区域?}

怎么样使用ScreenBase实现截取屏幕任意区域?

怎么样使用ScreenBase实现截取屏幕任意区域?
if(lpSaveDCInfo->hBmpSel!=NULL)

怎么样使用ScreenBase实现截取屏幕任意区域?怎么样使用ScreenBase实现截取屏幕任意区域?
{

怎么样使用ScreenBase实现截取屏幕任意区域?DeleteObject(lpSaveDCInfo
->hBmpSel);

怎么样使用ScreenBase实现截取屏幕任意区域?}

怎么样使用ScreenBase实现截取屏幕任意区域?

怎么样使用ScreenBase实现截取屏幕任意区域?memset(lpSaveDCInfo,
0,sizeof(SAVEDCINFO));

怎么样使用ScreenBase实现截取屏幕任意区域?memset(lpSaveBitmapInfo,
0,sizeof(SAVEBITMAPINFO));

怎么样使用ScreenBase实现截取屏幕任意区域?}

怎么样使用ScreenBase实现截取屏幕任意区域?

怎么样使用ScreenBase实现截取屏幕任意区域?
//----------------------------------------------------------------------

怎么样使用ScreenBase实现截取屏幕任意区域?
//Description:

怎么样使用ScreenBase实现截取屏幕任意区域?
//InitializethesaveDC

怎么样使用ScreenBase实现截取屏幕任意区域?
//--------------------------------------------------------------------

怎么样使用ScreenBase实现截取屏幕任意区域?voidCScreenBase::InitializeSaveDC(LPSAVEDCINFOlpSaveDCInfo,LPSAVEBITMAPINFOlpSaveBitmapInfo,constRECT*prcSave)

怎么样使用ScreenBase实现截取屏幕任意区域?怎么样使用ScreenBase实现截取屏幕任意区域?
{

怎么样使用ScreenBase实现截取屏幕任意区域?

怎么样使用ScreenBase实现截取屏幕任意区域?
//thepointerwillsaveallpixelpoint'scolorvalue

怎么样使用ScreenBase实现截取屏幕任意区域?lpSaveBitmapInfo->lpBitmapBits=NULL;

怎么样使用ScreenBase实现截取屏幕任意区域?

怎么样使用ScreenBase实现截取屏幕任意区域?

怎么样使用ScreenBase实现截取屏幕任意区域?
//createsamemorydevicecontext(DC)compatiblewiththescreendevice(hScrDC)

怎么样使用ScreenBase实现截取屏幕任意区域?lpSaveDCInfo->hDC=CreateCompatibleDC(m_hScrDC);

怎么样使用ScreenBase实现截取屏幕任意区域?

怎么样使用ScreenBase实现截取屏幕任意区域?

怎么样使用ScreenBase实现截取屏幕任意区域?
//InitialisethestructBITMAPINFOforthebimapinfomation,

怎么样使用ScreenBase实现截取屏幕任意区域?
//inordertousethefunctionCreateDIBSectiononwinceos,

怎么样使用ScreenBase实现截取屏幕任意区域?
//eachpixelstoredby24bits(biBitCount=24)andnocompressing(biCompression=0)

怎么样使用ScreenBase实现截取屏幕任意区域?ZeroMemory(&m_SaveBitmapInfo.bitMapInfo,sizeof(BITMAPINFO));

怎么样使用ScreenBase实现截取屏幕任意区域?lpSaveBitmapInfo
->bitMapInfo.bmiHeader.biSize=sizeof(BITMAPINFOHEADER);

怎么样使用ScreenBase实现截取屏幕任意区域?lpSaveBitmapInfo
->bitMapInfo.bmiHeader.biWidth=prcSave->right-prcSave->left;

怎么样使用ScreenBase实现截取屏幕任意区域?lpSaveBitmapInfo
->bitMapInfo.bmiHeader.biHeight=prcSave->bottom-prcSave->top;

怎么样使用ScreenBase实现截取屏幕任意区域?lpSaveBitmapInfo
->bitMapInfo.bmiHeader.biPlanes=1;

怎么样使用ScreenBase实现截取屏幕任意区域?lpSaveBitmapInfo
->bitMapInfo.bmiHeader.biBitCount=24;

怎么样使用ScreenBase实现截取屏幕任意区域?

怎么样使用ScreenBase实现截取屏幕任意区域?
//usethefunctionCreateDIBSectionandSelectObjectinordertogetthebimappointer:lpBitmapBits

怎么样使用ScreenBase实现截取屏幕任意区域?lpSaveDCInfo->hBmpSel=CreateDIBSection(lpSaveDCInfo->hDC,

怎么样使用ScreenBase实现截取屏幕任意区域?
&lpSaveBitmapInfo->bitMapInfo,

怎么样使用ScreenBase实现截取屏幕任意区域?DIB_RGB_COLORS,

怎么样使用ScreenBase实现截取屏幕任意区域?(
void**)&lpSaveBitmapInfo->lpBitmapBits,

怎么样使用ScreenBase实现截取屏幕任意区域?NULL,

怎么样使用ScreenBase实现截取屏幕任意区域?
0);

怎么样使用ScreenBase实现截取屏幕任意区域?lpSaveDCInfo
->hOldSel=SelectObject(lpSaveDCInfo->hDC,lpSaveDCInfo->hBmpSel);

怎么样使用ScreenBase实现截取屏幕任意区域?

怎么样使用ScreenBase实现截取屏幕任意区域?

怎么样使用ScreenBase实现截取屏幕任意区域?}

怎么样使用ScreenBase实现截取屏幕任意区域?

怎么样使用ScreenBase实现截取屏幕任意区域?
//----------------------------------------------------------------------

怎么样使用ScreenBase实现截取屏幕任意区域?
//Description:

怎么样使用ScreenBase实现截取屏幕任意区域?
//Savethebitmapofsavedctothefile

怎么样使用ScreenBase实现截取屏幕任意区域?
//--------------------------------------------------------------------

怎么样使用ScreenBase实现截取屏幕任意区域?voidCScreenBase::SaveFile(LPSAVEBITMAPINFOlpSaveBitmapInfo,TCHAR*pszPath)

怎么样使用ScreenBase实现截取屏幕任意区域?怎么样使用ScreenBase实现截取屏幕任意区域?
{

怎么样使用ScreenBase实现截取屏幕任意区域?

怎么样使用ScreenBase实现截取屏幕任意区域?
intiWidth=lpSaveBitmapInfo->bitMapInfo.bmiHeader.biWidth;

怎么样使用ScreenBase实现截取屏幕任意区域?
intiHeight=lpSaveBitmapInfo->bitMapInfo.bmiHeader.biHeight;

怎么样使用ScreenBase实现截取屏幕任意区域?

怎么样使用ScreenBase实现截取屏幕任意区域?
//Ifyouonlywanttogettheeverypixelcolorvalue,

怎么样使用ScreenBase实现截取屏幕任意区域?
//youcanbeginhereandthefollowingpartofthisfunctionwillbeunuseful;

怎么样使用ScreenBase实现截取屏幕任意区域?
//thefollowingpartisinordertowritefile;

怎么样使用ScreenBase实现截取屏幕任意区域?

怎么样使用ScreenBase实现截取屏幕任意区域?
//Bimapfileheaderinordertowritebmpfile

怎么样使用ScreenBase实现截取屏幕任意区域?BITMAPFILEHEADERbmBITMAPFILEHEADER;

怎么样使用ScreenBase实现截取屏幕任意区域?ZeroMemory(
&bmBITMAPFILEHEADER,sizeof(BITMAPFILEHEADER));

怎么样使用ScreenBase实现截取屏幕任意区域?bmBITMAPFILEHEADER.bfType
=0x4d42;//bmp

怎么样使用ScreenBase实现截取屏幕任意区域?bmBITMAPFILEHEADER.bfOffBits=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER);

怎么样使用ScreenBase实现截取屏幕任意区域?怎么样使用ScreenBase实现截取屏幕任意区域?bmBITMAPFILEHEADER.bfSize
=bmBITMAPFILEHEADER.bfOffBits+((iWidth*iHeight)*3);///norains:3=(24/8)

怎么样使用ScreenBase实现截取屏幕任意区域?

怎么样使用ScreenBase实现截取屏幕任意区域?//writeintofile

怎么样使用ScreenBase实现截取屏幕任意区域?FILE*mStream=NULL;

怎么样使用ScreenBase实现截取屏幕任意区域?
if((mStream=_tfopen(pszPath,TEXT("wb"))))

怎么样使用ScreenBase实现截取屏幕任意区域?怎么样使用ScreenBase实现截取屏幕任意区域?
{

怎么样使用ScreenBase实现截取屏幕任意区域?
//writebitmapfileheader

怎么样使用ScreenBase实现截取屏幕任意区域?fwrite(&bmBITMAPFILEHEADER,sizeof(BITMAPFILEHEADER),1,mStream);

怎么样使用ScreenBase实现截取屏幕任意区域?
//writebitmapinfo

怎么样使用ScreenBase实现截取屏幕任意区域?fwrite(&(lpSaveBitmapInfo->bitMapInfo.bmiHeader),sizeof(BITMAPINFOHEADER),1,mStream);

怎么样使用ScreenBase实现截取屏幕任意区域?
//writebitmappixelsdata

怎么样使用ScreenBase实现截取屏幕任意区域?fwrite(lpSaveBitmapInfo->lpBitmapBits,3*iWidth*iHeight,1,mStream);

怎么样使用ScreenBase实现截取屏幕任意区域?
//closefile

怎么样使用ScreenBase实现截取屏幕任意区域?fclose(mStream);

怎么样使用ScreenBase实现截取屏幕任意区域?}

怎么样使用ScreenBase实现截取屏幕任意区域?}

怎么样使用ScreenBase实现截取屏幕任意区域?

怎么样使用ScreenBase实现截取屏幕任意区域?

怎么样使用ScreenBase实现截取屏幕任意区域?
//----------------------------------------------------------------------

怎么样使用ScreenBase实现截取屏幕任意区域?
//Description:

怎么样使用ScreenBase实现截取屏幕任意区域?
//CopythescreenDCtothedestDC

怎么样使用ScreenBase实现截取屏幕任意区域?
//--------------------------------------------------------------------

怎么样使用ScreenBase实现截取屏幕任意区域?voidCScreenBase::CopyScreenDC(HDC*pHdcDest,constLPSAVEBITMAPINFOlpSaveBitmapInfo,constRECT*prcSrc)

怎么样使用ScreenBase实现截取屏幕任意区域?怎么样使用ScreenBase实现截取屏幕任意区域?
{

怎么样使用ScreenBase实现截取屏幕任意区域?
//copythescreendctothememorydc

怎么样使用ScreenBase实现截取屏幕任意区域?BitBlt(*pHdcDest,0,0,lpSaveBitmapInfo->bitMapInfo.bmiHeader.biWidth,lpSaveBitmapInfo->bitMapInfo.bmiHeader.biHeight,m_hScrDC,prcSrc->left,prcSrc->top,SRCCOPY);

怎么样使用ScreenBase实现截取屏幕任意区域?}

怎么样使用ScreenBase实现截取屏幕任意区域?

怎么样使用ScreenBase实现截取屏幕任意区域?

怎么样使用ScreenBase实现截取屏幕任意区域?
//----------------------------------------------------------------------

怎么样使用ScreenBase实现截取屏幕任意区域?
//Description:

怎么样使用ScreenBase实现截取屏幕任意区域?
//Initializetheinstance

怎么样使用ScreenBase实现截取屏幕任意区域?
//--------------------------------------------------------------------

怎么样使用ScreenBase实现截取屏幕任意区域?voidCScreenBase::Initialize(const

本文地址:http://www.45fan.com/a/question/72113.html
Tags: 实现 屏幕 ScreenBase
编辑:路饭网
  • 上一篇:2007-01-21日志内容
  • 下一篇:VBA图表介绍
  • 关于我们 | 联系我们 | 友情链接 | 网站地图 | Sitemap | App | 返回顶部