捕捉屏幕的时候包含鼠标

来源:本站
导读:目前正在解读《捕捉屏幕的时候包含鼠标》的相关信息,《捕捉屏幕的时候包含鼠标》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《捕捉屏幕的时候包含鼠标》的详细说明。
简介:默认情况下屏幕捕捉下来的内容不包含鼠标的,但是可以把鼠标画到捉下来的图像里面

LPBITMAPINFOHEADER captureScreenFrame(int left,int top,int width, int height,int tempDisableRect)

{

#ifndef _DIRECTX_captureScreenFrame

HDC hScreenDC = ::GetDC(NULL);

#else

theApp.DirectXInit();

#endif

//if flashing rect

if (flashingRect && !tempDisableRect) {

if (autopan) {

pFrame->SetUpRegion(left,top,width,height,1);

DrawFlashingRect( TRUE , 1);

}

else

DrawFlashingRect( TRUE , 0);

}

#ifndef _DIRECTX_captureScreenFrame

HDC hMemDC = ::CreateCompatibleDC(hScreenDC);

HBITMAP hbm;

hbm = CreateCompatibleBitmap(hScreenDC, width, height);

HBITMAP oldbm = (HBITMAP) SelectObject(hMemDC, hbm);

BitBlt(hMemDC, 0, 0, width, height, hScreenDC, left, top, SRCCOPY);

#else

theApp.DirectXCapture(left, top,width, height);

HDC hMemDC = NULL;

theApp.DirectXGetDC(hMemDC);

#endif

//Get Cursor Pos

POINT xPoint;

GetCursorPos( &xPoint );

HCURSOR hcur= FetchCursorHandle();

xPoint.x-=left;

xPoint.y-=top;

//Draw the HighLight

if (g_highlightcursor==1) {

POINT highlightPoint;

highlightPoint.x = xPoint.x -64 ;

highlightPoint.y = xPoint.y -64 ;

InsertHighLight( hMemDC, highlightPoint.x, highlightPoint.y);

}

//Draw the Cursor

if (g_recordcursor==1) {

ICONINFO iconinfo ;

BOOL ret;

ret = GetIconInfo( hcur,&iconinfo );

if (ret) {

xPoint.x -= iconinfo.xHotspot;

xPoint.y -= iconinfo.yHotspot;

//need to delete the hbmMask and hbmColor bitmaps

//otherwise the program will crash after a while after running out of resource

if (iconinfo.hbmMask) DeleteObject(iconinfo.hbmMask);

if (iconinfo.hbmColor) DeleteObject(iconinfo.hbmColor);

}

::DrawIcon( hMemDC,xPoint.x,xPoint.y, hcur);

}

//CString strText=COleDateTime::GetCurrentTime().Format();

//CRect rc(0,0,640,480);

//DrawText(hMemDC,strText,-1,&rc,DT_LEFT);

#ifndef _DIRECTX_captureScreenFrame

SelectObject(hMemDC,oldbm);

LPBITMAPINFOHEADER pBM_HEADER = (LPBITMAPINFOHEADER)GlobalLock(Bitmap2Dib(hbm, bits));

//LPBITMAPINFOHEADER pBM_HEADER = (LPBITMAPINFOHEADER)GlobalLock(Bitmap2Dib(hbm, 24));

#else

theApp.DirectXReleaseDC(hMemDC);

LPBITMAPINFOHEADER pBM_HEADER = (LPBITMAPINFOHEADER)GlobalLock(theApp.DirectXGetCaptureBitmap(bits));

#endif

if (pBM_HEADER == NULL) {

//MessageBox(NULL,"Error reading a frame!","Error",MB_OK | MB_ICONEXCLAMATION);

AfxMessageBox(IDS_CAPTURE_FAIL);

AfxPostQuitMessage(0);

//exit(1);

}

#ifndef _DIRECTX_captureScreenFrame

DeleteObject(hbm);

DeleteDC(hMemDC);

#endif

//if flashing rect

if (flashingRect && !tempDisableRect) {

if (autopan) {

DrawFlashingRect(FALSE , 1);

}

else

DrawFlashingRect(FALSE , 0);

}

#ifndef _DIRECTX_captureScreenFrame

ReleaseDC(NULL,hScreenDC) ;

#else

theApp.DirectXUninit();

#endif

return pBM_HEADER;

}

提醒:《捕捉屏幕的时候包含鼠标》最后刷新时间 2024-03-14 00:58:35,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《捕捉屏幕的时候包含鼠标》该内容的真实性请自行鉴别。