求助-截取对话框的界面
各位大虾 我写了一个基于对话框的程序,用vc写的。当把对话框程序运行后我想把该对话框的界面截屏并且保存下来。目前能够实现截取屏幕,但不能实现截取该对话框。我只要截取该对话框就行了,哪怕该对话框处于最小化时也要截取。望大虾们帮忙如何实现。非常感谢!!!
[解决办法]
- C/C++ code
HBITMAP GetWindowBitmap(HWND hWnd){typedef BOOL ( __stdcall *pPrintWindow )(HWND hWnd,HDC hdcBlt,UINT nFlags); RECT rect; HMODULE h; h = LoadLibrary( "user32.dll" ); pPrintWindow p; if( h ) { p = ( pPrintWindow )::GetProcAddress( h, "PrintWindow" ); } ::GetWindowRect(hWnd,&rect); HDC hScrDC=::GetDC(hWnd); //创建屏幕DC HDC hMemDC=CreateCompatibleDC(hScrDC); //创建内存DC HBITMAP bitmap=::CreateCompatibleBitmap(hScrDC,rect.right-rect.left,rect.bottom-rect.top); //创建兼容位图 HBITMAP OldBitmap=(HBITMAP)::SelectObject(hMemDC,bitmap); //把位图选进内存DC p(hWnd,hMemDC,0); //HDC d; //HWND hw; //hw = ::GetDesktopWindow(); //d = ::GetWindowDC( hw ); //::BitBlt( d, 0, 0, 200, 200, hMemDC, 0, 0, SRCCOPY ); ::SelectObject(hMemDC,OldBitmap); ::DeleteDC(hMemDC) ; //删除内存DC ::ReleaseDC(NULL,hScrDC) ; //释放屏幕DC FreeLibray( h ); return bitmap;}// 调用GetWindowBitmap( this->GetSafeHwnd() )