Visual Basic - Msgbox con con foco

Life is soft - evento anual de software empresarial
 
Vista:

Msgbox con con foco

Publicado por Miguel (243 intervenciones) el 02/02/2001 09:40:56
Tengo una aplicación que la puedo lanzar y cerrar en segundo plano desde otra que estoy haciendo.Para saber que está activa me aparece un Icono al lado de la hora.Al cerrarla desde el otro programa la que trabaja en segundo plano manda un msgbox diciendo que se ha cerrado la aplicación.El problema es que el msgbox se me queda detrás de la pantalla desde donde doy la orden para cerrarla.¿Como puedo hacer que el msgbox se quede delante?
Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Msgbox con con foco

Publicado por may (5 intervenciones) el 02/02/2001 12:12:36
Bueno la cosa va asi.Tienes que poner que la ventana del msgbox en el top de la aplicacion,por encima de la principal.Para ello necesitas saber el hwnd de la ventana del msgbox,el cual tendrias que recoger con una APi.Pero es mucho mas facil que te crees un formulario de Salida en vez del msgbox ,ya que de este si tienes el hwnd.

Y entonces llamas a la siguiente APi:

res = SetWindowPos(formulario.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_FLAGS)

te digo los posibles parametros :

Const SWP_size = 1
Const HWND_BOTTOM = 1 'Coloca la venta al final de la lista
Const HWND_TOP = 0 'Coloca la ventana al inicio del orden
Const HWND_TOPMOST = -1 'Coloca la ventana al inicio del orden por encima de todo
Const HWND_NOTOPMOST = -2 'Coloca la ventana al inicio del orden detras de las ventanas de nivel superior
Const SWP_HIDEWINDOW = &H80 'Esconde la ventana
Const SWP_NOACTIVATE = &H10 'No activa la ventana
Const SWP_NOMOVE = &H2 'Mantiene la posición Actual
Const SWP_NOREDRAW = &H8 'La ventana No se redibuja automáticamente
Const SWP_NOSIZE = &H1 'Mantiene el tamaño vigente
Const SWP_NOZORDER = &H4 'Mantiene la posición vigente en la lista de ventanas
Const SWP_SHOWWINDOW = &H40 'Presenta en pantalla la ventana

'Para mantenerlo siempre visible

Const SWP_FLAGS = SWP_NOMOVE Or SWP_NOSIZE Or SWP_SHOWWINDOW Or SWP_NOACTIVATE

Y en Aceptar cierra la ventana con la misma Api cambiandole las propiedades.

No se si te podra servir.Pruebalo.
¿Me podrias decir como sabe la aplicacion principal que se ha cerrado la que esta en segundo plano, o es que la cierras tu desde la principal?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Msgbox con con foco

Publicado por Miguel (243 intervenciones) el 02/02/2001 12:50:40
Gracias por tu ayuda , lo intentaré así.
Te cuento.
Tengo una tabla en la DB con un campo que lo único que hace es guardar el estado de la aplicación que está en segundo plano.Esta tabla la actualizo en las dos aplicaciones con un Timer.La que está en segundo plano es invisible y lo único que indica que está abierta es un Icono al lado de la hora.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar