![]() |
Llamada WM_MOUSELEAVE en un TrayIcon
Hola amigos del foro.
Tengo una duda que no logro solucionar. Tengo una aplicacion que se minimiza y coloca un TrayIcon en la bandeja y usa los mensajes WM_LBUTTONDOWN o WM_RBUTTONDOWN sin problema. Pero lo que no logro es que al cituar el puntero del raton sobre el icono muestre cualquier mensaje. He probado usando WM_MOUSELEAVE y WM_MOUSEHOVER pero no pasa nada. Espero me podais ayudar, gracias. |
¿Has probado con WM_MOUSEMOVE?
// Saludos |
Gracias, roman efectivamente con WM_MOUSEMOVE funciona pero yo quiero que cuando el raton este cituado en el icono muestre un Form y cuando el cursor se retire del icono el form desapasca por eso WM_MOUSELEAVE y WM_MOUSEHOVER.
|
Cita:
|
Hola,
Aprovechando el mensaje "WM_MOUSEMOVE" quizás podrías encontrar las coordenadas en que se encuentra el ratón, así como también si estas están "dentro" del "TrayIcon". De este modo podrías acaso implementar lo que necesitas. Muy probablemente me equivoco, pero, me suena que "WM_MOUSELEAVE" y "WM_MOUSEHOVER" son mensajes "nuevos" que no todos los controles soportan. Esto último es igual una tontería, algo que "me suena", pero, sin pies ni cabeza. Lo primero, sin embargo, creo que tiene su lógica. ;) |
Lo de WM_MOUSELEAVE y WM_MOUSEHOVER se uan con la función TrackMouseEvent, pero eso sirve para monitorear el ratón sobre una determinada ventana. En este caso, el icono no está en una de nuestras ventanas sino en la de la bandeja del sistema.
Yo creo que la idea de dec funcionaría si tomamos las coordenadas del ratón en el primer WM_MOUSEMOVE y con un Timer monitorear qué tan alejado está el ratón de esa posición inicial para "saber" si ya salimos del icono. // Saludos |
¿qué componente estás usando para el TrayIcon?
Lo digo porque cada uno implementa o no una función. Usando estrictamente la API de windows, se puede conseguir lo que quieres, de hecho proporciona un campo donde incluir el texto a mostrar a modo de Hint. Si el componente que usas lo permite (la licencia, tienes el código, etc) puedes hacerlo tú mismo. En caso contrario, usar uno de los muchos que sí lo tienen implementados (JVCL, LMDTOOLS,etc)
Saludos |
Cita:
// Saludos |
Gracias a todos, lo intentare capturando las coordenadas del raton.
Ya os cuento. |
Como siempre tienes razón roman, por eso no he añadido nada.
¿hay posibilidad de cambiar el diseño? Para mí, el hecho de pasar el ratón por ese área accidentalmente y que se muestre y oculte la ventana puede llegar a incomodarme mucho (por supuesto es mi opinión, tan válida como otra cualquiera). Creo que lo más rápido de implementar y más cómodo, sería que al hacer clic con el botón izquierdo, se muestre el Form, con un timer se oculta pasados ¿5 segundos? y si el usuario hace clic encima del form pues que se oculte... o en fin, tú podrás hacer otra cosa. También ten en cuenta que ese área está "sobre usada", todos los programas sacan mensajitos en ese área, quizás te interese buscar otra alternativa diferente. Saludos |
Cita:
// Saludos |
La franja horaria es GMT +2. Ahora son las 22:59:26. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi