Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Establecer un fondo de pantalla con vb6

Estas en el tema de Establecer un fondo de pantalla con vb6 en el foro de Visual Basic clásico en Foros del Web. Hola a todos. Quería hacer un sencillo programa en Visual Basic 6.0, tan solo me ha surgido un problema, quiero establecer una imagen de fondo ...
  #1 (permalink)  
Antiguo 18/12/2004, 15:23
Avatar de Pip
Pip
 
Fecha de Ingreso: noviembre-2003
Ubicación: Málaga
Mensajes: 280
Antigüedad: 20 años, 5 meses
Puntos: 0
Establecer un fondo de pantalla con vb6

Hola a todos.

Quería hacer un sencillo programa en Visual Basic 6.0, tan solo me ha surgido un problema, quiero establecer una imagen de fondo y solo se puede conseguir mediante la API de Windows. Esto no es un problema en sí mismo, el problema viene más tarde, cuando trato de establecer una imagen como fondo si esta no es bmp, ya que la API que vi solo permitía poner bmp de fondo.

No puedo saber para qué es cada parámetro de la función que uso, no he encontrado lugar donde lo expliquen, se me hace complicado el mundo de las APIs, ¿Alguien puede aclararme un poco?

Esta es la declaración de la API:

Código:
Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByVal lpvParam As Any, ByVal fuWinIni As Long) As Long
y así la llamo:

Código:
fallo = SystemParametersInfo(20, 0, imagen, 0)
donde imagen es un String con la dirección de donde está localizada mi imagen en el disco duro y fallo una variable cualquiera para controlar si hay algún error durante la operación.

Gracias de antemano por la ayuda.

PD: tampoco sé como elegir si quiero la imagen centrada, mosaico, estirada... por defecto la pone centrada.
__________________
por Pip
  #2 (permalink)  
Antiguo 29/07/2009, 16:28
Avatar de piojoman  
Fecha de Ingreso: enero-2005
Ubicación: Argentina
Mensajes: 224
Antigüedad: 19 años, 3 meses
Puntos: 3
Respuesta: Establecer un fondo de pantalla con vb6

cuando te referis a fondo se supone que es fondo de pantalla ¿NO?... puede ser de controles, etc.
Bueno, en primer lugar en el sitio de Microsoft esta especificado detalladamente esa API, dandote todas las constante posible para usar y demas...
Explicación en español
Por seguir, te vas a encontrar que solo se pueden cargar BMP, lo que te recomiendo es usar un control PictureBox para convertir las imagen admitidas por ese control a BMP y luego usar esa API que mencionas para cargar directamente al sistema...

dejo un ejemplo:
Colocar en un form un picturebox(Picture1) y dos botones (Command1 y Command2), ademas tenes que poner una imagen con el nombre de dibujo.jpg en C:\ o cambia la ruta del ejemplo para que no te tire un error...

Código:
Option Explicit
  
'Con esta linea declaramos la unica funcion que necesitamos de la API
Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" ( _
        ByVal uAction As Long, ByVal uParam As Long, ByVal lpvParam As Any, ByVal fuWinIni As Long) As Long
  
'Constantes que son necesarias para el funcionamiento de la API
Const SPIF_SENDWININICHANGE = &H2
Const SPI_SETDESKWALLPAPER = 20
Const SPIF_UPDATEINIFILE = &H1
  
Private Sub Command1_Click()

    Picture1.Picture = LoadPicture("C:\dibujo.jpg")
    SavePicture Picture1.Picture, "C:\dibujo.bmp"
    SystemParametersInfo SPI_SETDESKWALLPAPER, 0, "C:\dibujo.bmp", SPIF_UPDATEINIFILE Or SPIF_SENDWININICHANGE
     
End Sub
  
Private Sub Command2_Click()
  SystemParametersInfo SPI_SETDESKWALLPAPER, 0, "", SPIF_UPDATEINIFILE Or SPIF_SENDWININICHANGE
End Sub
Private Sub Form_Load()
  Command1.Caption = "Poner imagen como fondo de pantalla"
  Command2.Caption = "Sacar imagen como fondo de pantalla"
End Sub
Esa es una de las posible soluciones que encontre... Saludos!
  #3 (permalink)  
Antiguo 30/07/2009, 19:40
Avatar de Pip
Pip
 
Fecha de Ingreso: noviembre-2003
Ubicación: Málaga
Mensajes: 280
Antigüedad: 20 años, 5 meses
Puntos: 0
Respuesta: Establecer un fondo de pantalla con vb6

Gracias por la respuesta piojoman!

Aunque, desgraciadamente, no me sirve de mucho porque hace mucho que traté de hacer aquello y ya lo terminé de otra manera pero, infinitamente agradecido! Y más si le puede servir a otra persona en el futuro.

Gracias!
__________________
por Pip
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:12.