Device Context y Bitmaps
Publicado por Kuriptonokos (6 intervenciones) el 29/05/2006 10:15:13
Buenas a todos
He hecho un programa cutrillo de dibujo, puedo dibujar a mano alzada y eso pero tengo un problema.
cada vez que minimizo o muevo otra ventana (o envia la señal WM_PAINT) se me borra todo lo de la pantalla.
Estoy intentando guardar la pantalla como bitmap, para luego poder volver a cargarlo, pero no se por que no me sale. Os pongo el codigo relacionado con esto. Si teneis otras sugerencias que no sea guardar todos los puntos en que dibujo :P, os escucho.
HDC hdcScreen = GetDC (hWnd);
HDC hdcCompatible = CreateCompatibleDC(hdcScreen);
//Tamaño de la pantalla
int iWidth = GetSystemMetrics (SM_CXSCREEN) / 10;
int iHeight = GetSystemMetrics (SM_CYSCREEN) / 10;
HBITMAP hbmScreen = CreateCompatibleBitmap(hdcScreen, iWidth, iHeight);
SelectObject(hdcCompatible, hbmScreen);
//Aqui teoricamente se copia el bitmap al HDC no????
BitBlt(hdcCompatible, 0,0, iWidth, iHeight, hdcScreen, 0,0, SRCCOPY)
//Liberamos memoria
DeleteObject(hbmScreen);
DeleteDC(hdcScreen);
DeleteDC(hdcCompatible);
(he hecho controles en los valores de retorno para saber si se crea y hace todo bien, y en principio si)
He hecho un programa cutrillo de dibujo, puedo dibujar a mano alzada y eso pero tengo un problema.
cada vez que minimizo o muevo otra ventana (o envia la señal WM_PAINT) se me borra todo lo de la pantalla.
Estoy intentando guardar la pantalla como bitmap, para luego poder volver a cargarlo, pero no se por que no me sale. Os pongo el codigo relacionado con esto. Si teneis otras sugerencias que no sea guardar todos los puntos en que dibujo :P, os escucho.
HDC hdcScreen = GetDC (hWnd);
HDC hdcCompatible = CreateCompatibleDC(hdcScreen);
//Tamaño de la pantalla
int iWidth = GetSystemMetrics (SM_CXSCREEN) / 10;
int iHeight = GetSystemMetrics (SM_CYSCREEN) / 10;
HBITMAP hbmScreen = CreateCompatibleBitmap(hdcScreen, iWidth, iHeight);
SelectObject(hdcCompatible, hbmScreen);
//Aqui teoricamente se copia el bitmap al HDC no????
BitBlt(hdcCompatible, 0,0, iWidth, iHeight, hdcScreen, 0,0, SRCCOPY)
//Liberamos memoria
DeleteObject(hbmScreen);
DeleteDC(hdcScreen);
DeleteDC(hdcCompatible);
(he hecho controles en los valores de retorno para saber si se crea y hace todo bien, y en principio si)
Valora esta pregunta


0