c – 如何将子窗口的客户区保存到位图文件?

我使用核心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的实现留给你; )

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...