我使用核心WIN32和VC创建了一个
Windows应用程序.在我的父窗口中,我有一个子窗口和两个按钮“保存”和“发送”.
当用户单击“保存”按钮时,我希望打开savefileDialog,用户应该能够将图像保存为位图文件.
应该使用WinSock API将相同的文件发送给远程用户….我的问题是,我不知道如何将窗口的屏幕截图保存到位图文件…
请帮我解决这个问题……我没有使用MFC,ATL或WTL ….
提前致谢,
解决方法
RECT rect = {0}; GetWindowRect( hwnd,&rect ); ATL::CImage* image_ = new CImage(); image_ -> Create( rect.right - rect.left,rect.bottom - rect.top,32 ); HDC device_context_handle = image_ -> GetDC(); PrintWindow( hwnd,device_context_handle,PW_CLIENTONLY ); image_ -> Save( filename ); image_ -> ReleaseDC(); delete image_;
PrintWindow()
应该做的伎俩.
要另存为HBITMAP:
HDC hDC = GetDC( hwnd ); HDC hTargetDC = CreateCompatibleDC( hDC ); RECT rect = {0}; GetWindowRect( hwnd,&rect ); HBITMAP hBitmap = CreateCompatibleBitmap( hDC,rect.right - rect.left,rect.bottom - rect.top ); SelectObject( hTargetDC,hBitmap ); PrintWindow( hwnd,hTargetDC,PW_CLIENTONLY ); SaveBMPFile( filename,hBitmap,rect.bottom - rect.top ); DeleteObject( hBitmap ); ReleaseDC( hwnd,hDC ); DeleteDC( hTargetDC );
我将把SaveBMPFile的实现留给你; )