Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   Ocultar Content Menus (https://www.clubdelphi.com/foros/showthread.php?t=31559)

liadsoft 11-05-2006 09:15:27

Ocultar Content Menus
 
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

Cita:

Empezado por seoane
¿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.


La franja horaria es GMT +2. Ahora son las 01:08:32.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi