Visual Basic - Ocultar un formulario al cambiar de aplicacion

Life is soft - evento anual de software empresarial
 
Vista:

Ocultar un formulario al cambiar de aplicacion

Publicado por Aivan (6 intervenciones) el 20/06/2005 10:32:04
Hola a todos

A ver si alguien puede ayudarme con el siguiente problema. Tengo dos formularios A y B. El formulario A es la interfaz principal del programa y el formulario B es un formulario que se llama desde el formulario A . El formulario B, debido a las características de la aplicación, debe situarse en el primer plano de la pantalla, de forma que pueda trabajarse en el formulario A en todo momento y situación sin perder la visibilidad del formulario B. Para hacer esto utilizo la API 'setwindowspos' del siguiente modo:

SetWindowPos B.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE

El problema está en que cuando abro cualquier otra aplicación el formulario B continua estando en el primer plano de la pantalla y me interesaría que el formulario en si, fuese capaz de detectar cuando otra aplicación recibe el foco para que de esta forma dejase de estar en el primer plano de la pantalla haciendo lo siguiente:

SetWindowPos B.hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE

He probado con los eventos form_lostfocus y form_deactivate y no sucede nada de nada. Alguien tiene alguna idea?

Gracias por todo y hasta otra!

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:Ocultar un formulario al cambiar de aplicacion

Publicado por Juan_K (181 intervenciones) el 20/06/2005 23:49:16
Hola.
Haslo de esta manera.

Private Declare Sub 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)
Const WS_EX_TOPMOST = &H8&

Load TuformB
TuformB.Show 0, Me
SetWindowPos TuformB.hWnd, WS_EX_TOPMOST, 0&, 0&, 0, 0, SWP_NOSIZE

Suerte ;-)
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