Hola Ruben
No me refiero al cambio del escritorio de windows, si no a la imagen que ponemos como fondo de nuestra aplicación.
Javier, por lo visto en tu código,
oWin:bPainted := {|hDC| ABmpTiled(hDC,oWin,oBmp)} esto es antes de hacer activar la ventana y aparte de eso tu defines la imagen antes. En mi caso no sé cual es la imagen elegida para poner como logotipo de la empresa. Tengo que esperar a la activación de la ventana, y en el evento ON INI es donde voy a saber que imagen BMP voy a tener que poner en la ventana.
Más o menos así :
- Code: Select all Expand view
ACTIVATE WINDOW oWMain MAXIMIZED ;
ON INIT (EscogeArea(),; // aquí escogemos el área de trabajo y es donde averiguamos que imagen es la deseada por el usuario
PonFondo(),; // se supone que aquí deberíamos poner el nuevo fondo a la ventana principal
OtrasOpciones()) ; // bueno resto de cosas por hacer........
ON PAINT(DrawBitmap( hDC, oBmp:hBitmap, ;
( oWMain:nHeight() / 2 ) - ( oBmp:nHeight() / 2 ), ;
( oWMain:nWidth() / 2 ) - ( oBmp:nWidth() / 2 ),0,0 ));
VALID MsgYesNo( "Finalizar sesion?","Elija" )
El tema es, ¿qué debo enviar a la función para que me pinte la nueva imagen?
Ahora tengo este código, pero sólo me funciona después de entrar y salir de alguna opción de la barra del menú.
- Code: Select all Expand view
DEFINE BITMAP oBmp
DEFINE WINDOW oWMain MDI .........
ACTIVATE WINDOW oWMain MAXIMIZED ;
ON INIT (EscogeArea(),PonFondo(),VerificaConfig()) ;
ON PAINT(DrawBitmap( hDC, oBmp:hBitmap, ;
( oWMain:nHeight() / 2 ) - ( oBmp:nHeight() / 2 ), ;
( oWMain:nWidth() / 2 ) - ( oBmp:nWidth() / 2 ),0,0 ));
VALID MsgYesNo( "Finalizar sesion?","Elija" )
//----------------------------------------------------------------------------//
FUNCTION PonFondo()
//----------------------------------------------------------------------------//
Local cBmpFile := Alltrim(aDatEmp[15]) //aquí traemos el path y el nombre del fichero imagen
oBmp:LoadBmp(cBmpFile)
oBmp:Refresh()
oWMain:Refresh()
Sysrefresh()
Return(nil)