Ayuda con diálogo no modal.

28/04/2005 - 01:54 por William GS | Informe spam
Hola a todos, tengo un CDialog no modal, sin barra de
titulo, ni boton Aceptar ni Cancelar; lo que busco es que
este se oculte cuando el usuario hace click fuera de este
dialogo y/o cuando pierde el foco, he tratado de capturar
el mensaje WM_KILLFOCUS, pero este se llama solo una vez
cuando se muestra, no se llama nunca cuando pierde el
foco.

Lo que estoy intentando hacer es un dialogo "popup", es
decir cuando el usuario hace clic en un boton por
ejemplo, este dialogo debe aparecer debajo del boton.
Logro hacer esto, lo que me falta es ocultar el dialogo.

Alguna sugerencia para hacer esto?

Muchas gracias,
William G.S.

Preguntas similare

Leer las respuestas

#1 Isidro Muñoz
28/04/2005 - 10:10 | Informe spam
¿ cuando se haga click fuera de esa ventana pero en la misma aplicacion o
cuando se haga click incluso fuera de la aplicación ?

Si es fuera de la aplicacion creo que tienes que usar HOOK, y el tipo que
puedes crear es WH_MOUSE Hook. Si no tienes claro como crearlos lo comentas.

¿ Seguro que no hay ningún tipo de ventana que permita esto ?

Entonces las ventanas de popup ¿ como se crean ? Seguro que hay alguna
condicion en el CreateWindow para hacer esto. O eso sospecho yo, lo que
ocurre que ando mal de tiempo para investigarlo.

Saludos
Isidro.

"William GS" escribió en el mensaje
news:084d01c54b84$654c9090$
Hola a todos, tengo un CDialog no modal, sin barra de
titulo, ni boton Aceptar ni Cancelar; lo que busco es que
este se oculte cuando el usuario hace click fuera de este
dialogo y/o cuando pierde el foco, he tratado de capturar
el mensaje WM_KILLFOCUS, pero este se llama solo una vez
cuando se muestra, no se llama nunca cuando pierde el
foco.

Lo que estoy intentando hacer es un dialogo "popup", es
decir cuando el usuario hace clic en un boton por
ejemplo, este dialogo debe aparecer debajo del boton.
Logro hacer esto, lo que me falta es ocultar el dialogo.

Alguna sugerencia para hacer esto?

Muchas gracias,
William G.S.



Respuesta Responder a este mensaje
#2 Isidro Muñoz
28/04/2005 - 10:19 | Informe spam
No he podido resistirlo!!!! :-)

La funcion CreateWindow en el parametro dwStyle acepta el tipo
WS_POPUPWINDOW .

Tendrás que mirar en CDialog donde se define esa propiedad, ya que CDialog
es una encapsulacion de CreateWindow. Aunque a lo mejor CDialog llama a
CreateDialog, pero CreateDialog llama a CreateWindow.

Yo nunca he usado MFC!!!

Saludos.
Isidro.

"Isidro Muñoz" <imunoz@()daipro.net> escribió en el mensaje
news:
¿ cuando se haga click fuera de esa ventana pero en la misma aplicacion o
cuando se haga click incluso fuera de la aplicación ?

Si es fuera de la aplicacion creo que tienes que usar HOOK, y el tipo que
puedes crear es WH_MOUSE Hook. Si no tienes claro como crearlos lo


comentas.

¿ Seguro que no hay ningún tipo de ventana que permita esto ?

Entonces las ventanas de popup ¿ como se crean ? Seguro que hay alguna
condicion en el CreateWindow para hacer esto. O eso sospecho yo, lo que
ocurre que ando mal de tiempo para investigarlo.

Saludos
Isidro.

"William GS" escribió en el mensaje
news:084d01c54b84$654c9090$
> Hola a todos, tengo un CDialog no modal, sin barra de
> titulo, ni boton Aceptar ni Cancelar; lo que busco es que
> este se oculte cuando el usuario hace click fuera de este
> dialogo y/o cuando pierde el foco, he tratado de capturar
> el mensaje WM_KILLFOCUS, pero este se llama solo una vez
> cuando se muestra, no se llama nunca cuando pierde el
> foco.
>
> Lo que estoy intentando hacer es un dialogo "popup", es
> decir cuando el usuario hace clic en un boton por
> ejemplo, este dialogo debe aparecer debajo del boton.
> Logro hacer esto, lo que me falta es ocultar el dialogo.
>
> Alguna sugerencia para hacer esto?
>
> Muchas gracias,
> William G.S.
>
>
>




Respuesta Responder a este mensaje
#3 Rodrigo Corral [MVP]
28/04/2005 - 10:26 | Informe spam
Debes llamar a la función TrackMouseEvent y controlar el mensaje
WM_MOUSELEAVE.


Un saludo
Rodrigo Corral González [MVP]

FAQ de microsoft.public.es.vc++
http://rcorral.mvps.org
Respuesta Responder a este mensaje
#4 Gracias.
29/04/2005 - 04:42 | Informe spam
Muchas gracias por la ayuda Isidro,
Saludos,
William G.S.


No he podido resistirlo!!!! :-)

La funcion CreateWindow en el parametro dwStyle acepta el


tipo
WS_POPUPWINDOW .

Tendrás que mirar en CDialog donde se define esa


propiedad, ya que CDialog
es una encapsulacion de CreateWindow. Aunque a lo mejor


CDialog llama a
CreateDialog, pero CreateDialog llama a CreateWindow.

Yo nunca he usado MFC!!!

Saludos.
Isidro.
Respuesta Responder a este mensaje
#5 Anonimo
29/04/2005 - 04:45 | Informe spam
Muchas gracias por la ayuda, :-)

Saludos,
William GS


Debes llamar a la función TrackMouseEvent y controlar el


mensaje
WM_MOUSELEAVE.


Un saludo
Rodrigo Corral González [MVP]

FAQ de microsoft.public.es.vc++
http://rcorral.mvps.org


.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida