网摘-获取屏幕dc并且将其画面显示在窗体中

Posted qq2806933146xiaobai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网摘-获取屏幕dc并且将其画面显示在窗体中相关的知识,希望对你有一定的参考价值。

获取屏幕dc并且将其画面显示在窗体中

  HWND hWnd = ::GetDesktopWindow();//获得屏幕的HWND.
 HDC hScreenDC = ::GetDC(hWnd);   //获得屏幕的HDC.
 HDC MemDC = ::CreateCompatibleDC(hScreenDC);
 RECT rect; 
 ::GetWindowRect(hWnd,&rect);
 SIZE screensize;
 screensize.cx=rect.right-rect.left;
 screensize.cy=rect.bottom-rect.top;
 hBitmap = ::CreateCompatibleBitmap(hScreenDC,screensize.cx,screensize.cy);
 HGDIOBJ hOldBMP = ::SelectObject(MemDC,hBitmap);
 ::BitBlt(MemDC,0,0,screensize.cx,screensize.cy,hScreenDC,rect.left,rect.top,SRCCOPY);//将屏幕画布拷贝到内存画布上
 ::SelectObject(MemDC,hOldBMP);
 ::DeleteObject(MemDC);
 ::ReleaseDC(hWnd,hScreenDC);
    CDC *pDC=GetDC();//获取窗体的cdc
 HDC dDlgDC=pDC->m_hDC;//获取窗体的hdc
 HDC MemDC1 = CreateCompatibleDC(dDlgDC);//创建画布
 HGDIOBJ hOldBMP1 = ::SelectObject(MemDC1,hBitmap);//选入画布
 ::StretchBlt(dDlgDC,0,0,600,400,MemDC1,0,0,screensize.cx,screensize.cy,SRCCOPY);//将内存画布缩略显示到窗体中
 ::SelectObject(MemDC1,hOldBMP1);//选出画布
 ::DeleteObject(MemDC1);//删除内存hdc
 ::ReleaseDC(m_hWnd,dDlgDC);//释放实际窗体的hdc

 

 

windows AP:

HDC GetDC( HWND hWnd // handle to window);

Parameters

hWnd

[in] Handle to the window whose DC is to be retrieved. If this value is NULL, GetDC retrieves the DC for the entire screen.

以上是关于网摘-获取屏幕dc并且将其画面显示在窗体中的主要内容,如果未能解决你的问题,请参考以下文章

winform中进度条(ProgressBar)控件使用时UI画面显示延迟的解决

怎么让电脑画面填满屏幕??

如何创建第二个启动画面(在 ios 中的默认启动画面之后)?

为啥 PhoneGap 总是显示默认的启动画面?

UnityShader:摄像机深度图获取,屏幕分割,变形

UnityShader:摄像机深度图获取,屏幕分割,变形