2011-05-10 9 views
7

He creado una aplicación de Windows utilizando WIN32 y VC++. En la ventana principal tengo una ventana secundaria y dos botones "guardar" y "enviar".Cómo guardar el área de cliente de una ventana secundaria en un archivo de mapa de bits?

Cuando el usuario hace clic en el botón "Guardar" quiero que se abra el savefileDialog y el usuario debería poder guardar la imagen como un archivo de mapa de bits.

El mismo archivo debe ser enviado a un usuario remoto a través de la API de Winsock .... Mi problema es que no sé cómo guardar la captura de pantalla de la ventana en un archivo de mapa de bits ...

por favor me ayude a salir de esto ... no he utilizado MFC, ATL o WTL ....

gracias de antemano,

Respuesta

11
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() debe hacer el truco.

Guardar como 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); 

voy a salir de la aplicación de SaveBMPFile hasta usted;)

+0

y @ildjarm: gracias compañero, pero, estoy usando WIN32 núcleo y C++ solamente .... – aProgrammer

+1

es el problema de la ATL :: CImage? Si es así, puedo mostrarte cómo hacerlo con winapi puro. –

+0

gracias por la amabilidad, por favor infórmeme sobre los pasos que debo seguir para guardar la imagen mostrada en una ventana secundaria en un objeto HBITMAP ...... – aProgrammer

Cuestiones relacionadas