2012-01-12 18 views
10

Me he estado preguntando, cada vez que se llama al método de la clase NotifyIconShowBalloonTip, se obtiene una información sobre herramientas globo de la siguiente manera:Cómo crear información sobre herramientas y globos ricos ricos en área de notificación

Standard Baloon Tip
Fig 1: Estándar cuadro emergente



Algunas aplicaciones y productos de Microsoft son capaces de mostrar más de los globos de sugerencias 'simples'.
He aquí algunos ejemplos:

Windows Update Tip Fig2: Actualización de Windows Globo Tooltip


Driver Installation Tip http://i.msdn.microsoft.com/dynimg/IC295019.png
Fig3: Hardware de instalación del controlador cuadro emergente


USB Safely Remove
Fig4: Hardware La eliminación Información sobre la herramienta (Programa: USB Safely Remove)



un buen vistazo a las figuras 2, 3 y 4, revela que no son estándar sobre herramientas de globo!

Fig2 tiene una forma diferente, posiblemente al establecer la propiedad Region. También tiene un icono personalizado que es mucho más grande que el estándar ToolTipIcon.

La figura 3 usa la forma estándar (creo) pero tiene un icono personalizado que no hace falta decir que es más grande que el tamaño predeterminado de ToolTipIcon.

Fig4 utiliza un estándar ToolTipIcon pero tiene una forma diferente.


Mi pregunta es, ¿cómo se puede crear una de las herramientas de globo 'enriquecidas' que se ven en el área de notificación en .NET? Puedo manejar WinAPI así como también puede producir el resultado necesario.

+0

* Mi * buena mirada no me dice eso. ¿Qué tiene de diferente tu aspecto? Sí, usan grandes iconos personalizados. Eso es compatible desde Windows XP SP2. Utilice la función ['Shell_NotifyIcon'] (http://msdn.microsoft.com/en-us/library/windows/desktop/bb762159.aspx) para crearlos. –

Respuesta

5

Tienes que usar la función Win32 Shell_NotifyIcon. Puede establecer dwInfoFlags miembro de la estructura NOTIFYICONDATA en NIIF_USER para utilizar un icono personalizado para la información sobre herramientas del globo.

En Windows XP Service Pack 2 y posterior, puede utilizar el miembro hIcon para especificar un icono personalizado.

En Windows Vista y versiones posteriores, la estructura NOTIFYICONDATA contiene el miembro adicional hBalloonIcon. Puede usar este miembro para especificar un icono personalizado si ha configurado el miembro cbSize con el tamaño correcto de la estructura extendida NOTIFYICONDATA.

0

mira esto:

http://www.codeproject.com/KB/WPF/WPF_TaskbarNotifier.aspx

o

www.codeproject.com/KB/WPF/wpf_notifyicon.aspx

Otra opción es hacer que su propia forma de notificación de globo, , a continuación, tendrá la notificación con fondo de flores y bordes de color rosa :) BTW: que puede tener algunas funciones también.

Como en este ejemplo:

http://i.stack.imgur.com/QtA0Y.jpg < < imagen de ejemplo

Crear un formulario que lo desee, Región, controles, etc :) y el código de algo como:

void notifyIcon_MouseMove(object sender, MouseEventArgs e) 
    { 
     if (!this.Visible) 
     { 
      ShowPopup(); 
     } 
    } 

    Timer t = new Timer(); 
    private void ShowPopup() 
    { 
     Rectangle rect = Screen.GetWorkingArea(new Point(Screen.PrimaryScreen.Bounds.Right, Screen.PrimaryScreen.Bounds.Bottom)); 
     this.Top = rect.Bottom - this.Height; 
     this.Left = rect.Right - this.Width; 
     this.Visible = true; 

     t.Interval = 4000; 
     t.Tick += new EventHandler(t_Tick); 
     t.Start(); 
    } 

    void t_Tick(object sender, EventArgs e) 
    { 
     t.Stop(); 
     Visible = false; 
    } 

    private void Form1_Click(object sender, EventArgs e) 
    { 
     this.Visible = false; 
    } 

    private void Form1_FormClosing(object sender, FormClosingEventArgs e) 
    { 
     notifyIcon.Visible = false; 
     notifyIcon.Dispose(); 
    } 

Por cierto, todos se ven un poco iguales, con diferentes tamaños de iconos, y el primero o ne podría caber a la derecha, mientras que todos los demás están alineados a la izquierda ... cambios menores de tono Etc. :)

+0

Realmente no necesita hacer todo eso, ni necesita usar WPF. El soporte para esto está integrado en Windows. –

+0

Bueno, la API de Windows es capaz ... no encontré una manera fuerte pero más fácil. ¿Qué tenías en mente? –

Cuestiones relacionadas