PDA

Ver la Versión Completa : Ocultar Content Menus


liadsoft
11-05-2006, 09:15:27
Hola. Tengo un problema. Tengo una aplicación en la que pongo un icono en el área de notificación, al lado del reloj. Al dar click derecho con el mouse, captura la posición del cursor y muestro en esa posición un Menu con la función API TrackPopupMenuEx. Hasta ahí todo bien. Pero cuando el usuario da un click fuera del menú, es decir, un ejemplo, activa otra aplicación, el menú no se ocúlta automáticamente.

Lo que hice fue que al enseñar el menu creo un timer, y captura la ForeGround Window en el momento de enseñarla y en cada intervalo compruebo si a cambiado, de ser así, destruyo el menú, pero así no sirve, aún así no lo oculta. Lo que tuve que hacer fue crear una ventana oculta para el menú y lo mismo, al pasar el intervalo si cambió el Forteground destruyo la ventana y así si funciona.

Lo que quiero es una forma mejor, eso de crear una ventana extra cada ves que muestro el menú es un desástre, se ve mal. Si alguien tiene otra soluci´pion, por favor, que me ayude.:confused:

seoane
11-05-2006, 13:22:04
¿Que handle le pasas en el parametro hwnd de la funcion TrackPopupMenuEx? Solo tendrias que usar la funcion SetForegroundWindow con ese handle antes de usar TrackPopupMenuEx y el menu se ocultara correctamente.

Por cierto, ¿tu aplicacion no usa formularios? aunque esten ocultos, porque podria ser mas sencillo usar un TPopupMenu. Seria el mismo proceso, usar SetforegroundWindow con el Handle del formulario y el metodo Poup para mostrar el menu. Solo es una sugerencia.

liadsoft
12-05-2006, 06:32:35
¿Que handle le pasas en el parametro hwnd de la funcion TrackPopupMenuEx? Solo tendrias que usar la funcion SetForegroundWindow con ese handle antes de usar TrackPopupMenuEx y el menu se ocultara correctamente.

Por cierto, ¿tu aplicacion no usa formularios? aunque esten ocultos, porque podria ser mas sencillo usar un TPopupMenu. Seria el mismo proceso, usar SetforegroundWindow con el Handle del formulario y el metodo Poup para mostrar el menu. Solo es una sugerencia.

Oye, gracias por lo de los formularios, pero nececito una aplicación ultra pequeña, sólo API, sin utilizar los componentes del Delphi y toda esa interface. Tengo mis razones, por supuesto que muchas gracias por tu sugerencia.

Bueno, no se me había ocurrido activar la ventana, funcionó okay. Muchísimas gracias por todo.