I have created a windows application using core WIN32 and VC++. In my parent window I have a child window and two buttons \"save\" and \"send\".
When user clicks the
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() should do the trick.
To save as 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, hTargetDC, rect.right - rect.left,
rect.bottom - rect.top );
DeleteObject( hBitmap );
ReleaseDC( hwnd, hDC );
DeleteDC( hTargetDC );
I will leave the implementation of SaveBMPFile up to you ; )