读书人

-截取对话框的界面

发布时间: 2012-04-03 12:38:19 作者: rapoo

求助-截取对话框的界面
各位大虾 我写了一个基于对话框的程序,用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() ) 

读书人网 >VC/MFC

热点推荐