我在做的时候,如果一连序,Picture控件就不显示图片了。郁闷,怎么也想不通。SO 特来请教各位。
代码如下:
While( TRUE )
{
int nScreenWidth = GetSystemMetrics(SM_CXSCREEN); int nScreenHeight = GetSystemMetrics(SM_CYSCREEN); HWND hDesktopWnd = ::GetDesktopWindow(); HDC hDesktopDC = ::GetDC(hDesktopWnd); HDC hCaptureDC = CreateCompatibleDC(hDesktopDC);
HBITMAP hCaptureBitmap =CreateCompatibleBitmap(hDesktopDC, nScreenWidth, nScreenHeight); SelectObject(hCaptureDC,hCaptureBitmap); BitBlt(hCaptureDC,0,0,nScreenWidth,nScreenHeight,hDesktopDC,0,0,SRCCOPY); m_Picture.SetBitmap( hCaptureBitmap ); //显示图片 Sleep( 100 ); //小睡一会继续 ::ReleaseDC(hDesktopWnd,hDesktopDC); DeleteDC(hCaptureDC);
}
代码如下:
While( TRUE )
{
int nScreenWidth = GetSystemMetrics(SM_CXSCREEN); int nScreenHeight = GetSystemMetrics(SM_CYSCREEN); HWND hDesktopWnd = ::GetDesktopWindow(); HDC hDesktopDC = ::GetDC(hDesktopWnd); HDC hCaptureDC = CreateCompatibleDC(hDesktopDC);
HBITMAP hCaptureBitmap =CreateCompatibleBitmap(hDesktopDC, nScreenWidth, nScreenHeight); SelectObject(hCaptureDC,hCaptureBitmap); BitBlt(hCaptureDC,0,0,nScreenWidth,nScreenHeight,hDesktopDC,0,0,SRCCOPY); m_Picture.SetBitmap( hCaptureBitmap ); //显示图片 Sleep( 100 ); //小睡一会继续 ::ReleaseDC(hDesktopWnd,hDesktopDC); DeleteDC(hCaptureDC);
}
BitBlt(hCaptureDC,0,0,nScreenWidth,nScreenHeight,hDesktopDC,0,0,SRCCOPY); m_Picture.SetBitmap( hCaptureBitmap ); //显示图片SelectObject(hCaptureDC,oldbmp );
DeleteObject(hCaptureBitmap );用完后,环境要恢复!
while( TRUE )
{
int nScreenWidth = GetSystemMetrics(SM_CXSCREEN); int nScreenHeight = GetSystemMetrics(SM_CYSCREEN); HWND hDesktopWnd = ::GetDesktopWindow(); HDC hDesktopDC = ::GetDC(hDesktopWnd); HDC hCaptureDC = CreateCompatibleDC(hDesktopDC); HBITMAP hCaptureBitmap =CreateCompatibleBitmap(hDesktopDC, nScreenWidth, nScreenHeight); SelectObject(hCaptureDC,hCaptureBitmap); HBITMAP oldbmp = (HBITMAP)SelectObject(hCaptureDC,hCaptureBitmap);
BitBlt(hCaptureDC,0,0,nScreenWidth,nScreenHeight,hDesktopDC,0,0,SRCCOPY); m_Bmp.SetBitmap( hCaptureBitmap ); //显示图片 SelectObject(hCaptureDC,oldbmp );
DeleteObject(hCaptureBitmap ); //Sleep( 100 ); //小睡一会继续 ::ReleaseDC(hDesktopWnd,hDesktopDC); DeleteDC(hCaptureDC);
}可是我测试的时候还是不行啊
DeleteObject(hCaptureBitmap );用完后,环境要恢复!
这一点很重要的.