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

Formulario flotante

Estas en el tema de Formulario flotante en el foro de Visual Basic clásico en Foros del Web. Hola, quiero hacer un formulario que siempre esté visible, es decir que al recibir el foco el otro formulario siempre esté visible el anterior. Gracias ...
  #1 (permalink)  
Antiguo 24/07/2006, 13:40
 
Fecha de Ingreso: abril-2005
Mensajes: 483
Antigüedad: 19 años, 8 meses
Puntos: 3
Formulario flotante

Hola, quiero hacer un formulario que siempre esté visible, es decir que al recibir el foco el otro formulario siempre esté visible el anterior.

Gracias por las respuestas.
Saludos
  #2 (permalink)  
Antiguo 24/07/2006, 17:49
Avatar de [EX3]  
Fecha de Ingreso: marzo-2006
Ubicación: Fuenlabrada, Madrid
Mensajes: 203
Antigüedad: 18 años, 9 meses
Puntos: 1
Mediante el API de Windows se puede modificar la posicion del formulario para que sea constante sobre el resto de ventanas. Añade un Modulo BAS a tu proyecto y añadele el siguiente codigo:
Código:
Option Explicit

Private Const SWP_NOMOVE = 2
Private Const SWP_NOSIZE = 1
Private Const HWND_TOPMOST = -1
Private Const HWND_NOTOPMOST = -2

Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, _ 
ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, _
ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long

Public Sub OnTop(F As Form)
'Coloca la ventana sobre todas las demas: Call SetWindowPos(F.hwnd, HWND_TOPMOST, 0, 0, 0, 0, _ SWP_NOMOVE Or SWP_NOSIZE)
End Sub Public Sub OffTop(F As Form)
'Devuelve la posicion anterior a la ventana: Call SetWindowPos(F.hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, _ SWP_NOMOVE Or SWP_NOSIZE)
End Sub
Luego desde el evento Load del formulario que desees haces la siguiente llamada:
Código:
Private Sub Form_Load()
Call OnTop(Me)
End Sub
Salu2...
__________________
Proyecto dx_lib32 (http://dxlib32.se32.com) Libreria DLL ActiveX para el desarollo de juegos y programas multimedia en Visual Basic 6.0 con la potencia de DirectX

Dice un dicho que "el que calla otorga". En internet tenemos otro que dice "nunca alimentes a un troll" que viene a decir "dejale hablar solo que se ya se cansara de incordiar". Solo los necios creen tener la razon con la ultima palabra.

  #3 (permalink)  
Antiguo 25/07/2006, 13:38
 
Fecha de Ingreso: abril-2005
Mensajes: 483
Antigüedad: 19 años, 8 meses
Puntos: 3
Gracias EX3 por la respuesta.

Saludos
  #4 (permalink)  
Antiguo 16/08/2006, 18:58
Avatar de daosorio  
Fecha de Ingreso: mayo-2002
Ubicación: Veracruz
Mensajes: 235
Antigüedad: 22 años, 6 meses
Puntos: 3
Mi pregunta es si con esta opción podría quedar encima, hasta de juegos como los de carros que ocupan toda la pantalla o de Mario Bross.. que cargan como en MS Dos.

Gracias.
__________________
Mi Blog: www.daosorio.com
  #5 (permalink)  
Antiguo 17/08/2006, 16:58
Avatar de [EX3]  
Fecha de Ingreso: marzo-2006
Ubicación: Fuenlabrada, Madrid
Mensajes: 203
Antigüedad: 18 años, 9 meses
Puntos: 1
La respuesta es no. Los juegos que corren sobre Windows en modo pantalla completa se hacen con el control absoluto de la pantalla dejando el escritorio de Windows detras. Ahi solo lograrias que la ventana del juego perdiera el foco y se minimizara para mostrar el escritorio de Windows. Los programas de MS-DOS en modo pantalla completa hacen justo lo mismo dado que no tiene nada que ver con el escritorio de Windows.

Salu2...
__________________
Proyecto dx_lib32 (http://dxlib32.se32.com) Libreria DLL ActiveX para el desarollo de juegos y programas multimedia en Visual Basic 6.0 con la potencia de DirectX

Dice un dicho que "el que calla otorga". En internet tenemos otro que dice "nunca alimentes a un troll" que viene a decir "dejale hablar solo que se ya se cansara de incordiar". Solo los necios creen tener la razon con la ultima palabra.

  #6 (permalink)  
Antiguo 22/08/2006, 14:43
Avatar de daosorio  
Fecha de Ingreso: mayo-2002
Ubicación: Veracruz
Mensajes: 235
Antigüedad: 22 años, 6 meses
Puntos: 3
EX3, gracias por aclararmelo.

Saludos cordiales.
__________________
Mi Blog: www.daosorio.com
  #7 (permalink)  
Antiguo 21/02/2008, 11:06
 
Fecha de Ingreso: septiembre-2007
Ubicación: Badajoz City
Mensajes: 126
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: Formulario flotante

Hace tiempo que leí este post pero me ha salido un error en un ordenador donde he usado este código. Y creo que es por usar las Api.

¿alguien sabe que puede haber pasado?
  #8 (permalink)  
Antiguo 21/02/2008, 19:29
Avatar de seba123neo  
Fecha de Ingreso: febrero-2007
Ubicación: Esperanza, Santa Fe
Mensajes: 1.046
Antigüedad: 17 años, 10 meses
Puntos: 19
Re: Formulario flotante

Hola yenay,es imposible que no te ande por la api,aparte usa solo una,y esta en el archivo user32.dll,si no tenes ese archivo no te anda nada del windows,debe ser otra cosa,que error te sale y que linea te marca??

saludos.
__________________
" Todos Somos Ignorantes; lo que pasa es que no todos ignoramos las mismas cosas " - Albert Einstein
  #9 (permalink)  
Antiguo 22/02/2008, 05:13
 
Fecha de Ingreso: septiembre-2007
Ubicación: Badajoz City
Mensajes: 126
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: Formulario flotante

Voy a hacer que me de el error y imprimo la imagen
  #10 (permalink)  
Antiguo 22/02/2008, 05:14
 
Fecha de Ingreso: septiembre-2007
Ubicación: Badajoz City
Mensajes: 126
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: Formulario flotante

Vale, el error que me sale es el siguiente:



que puede ser?
  #11 (permalink)  
Antiguo 22/02/2008, 05:15
 
Fecha de Ingreso: septiembre-2007
Ubicación: Badajoz City
Mensajes: 126
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: Formulario flotante

El error lo da al ejecutar el .exe ya compilado y todo. Y el caso es que en algunos ordenadores no va y en otros sí. Indistintamente de que el VB esté o no instalado en el ordenador
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 01:13.