winapi taskbar tooltip balloon

winapi - Cómo ocultar un globo de la barra de tareas a voluntad?



taskbar tooltip (2)

Es muy fácil forzar que un ícono de barra de tareas muestre una información sobre herramientas de globo: todo lo que tengo que hacer es establecer el indicador NIF_INFO cuando llamo a Shell_NotifyIcon (NIM_MODIFY, ...), y aparece el globo, no hay problema.

Ahora, quiero poder ocultar el globo cuando ya no lo necesite, pero no puedo encontrar la forma de hacerlo. Intenté borrar el indicador NIF_INFO y llamar a Shell_NotifyIcon (NIM_MODIFY, ...), pero el globo permaneció. Desaparece por sí mismo, unos segundos más tarde, pero eso no es lo que quiero: quiero ocultarlo de inmediato, cuando mi programa cree que debería estar oculto.

La única forma de hacer desaparecer el globo parece ser destruir el icono y luego agregarlo a la barra de tareas nuevamente, pero es feo.

¿Es posible ocultar el globo sin volver a crear el ícono de la barra de tareas? Gracias.


Yo ofrecería que no es realmente lo mejor para el usuario eliminar por la fuerza un globo de notificación. A veces, un usuario no mira una notificación de inmediato, y ese lento desvanecimiento que ocurre durante un par de segundos les da la oportunidad de echar un vistazo antes de que el globo se haya ido. Desde una perspectiva de usabilidad, mostrar el globo debe ser responsabilidad de la aplicación, pero la eliminación del globo debería ser realmente responsabilidad del usuario. De lo contrario, podría estar ocultando información que en realidad estaban interesados ​​en ver, y al ocultarla de forma inmediata, eliminará por completo esa "última oportunidad" que tiene el usuario durante el desvanecimiento de los globos.


Para ocultar inmediatamente un globo, establezca el miembro szInfo de NOTIFYICONDATA en una cadena vacía, como nid.szInfo[0] = 0; y llame a Shell_NotifyIcon( NIM_MODIFY, &nid ) .