10

我一直在想,每当你调用类的ShowBalloonTip方法时NotifyIcon,你会得到一个像这样的气球工具提示:

标准气球头
图 1:标准气球工具提示



某些应用程序和 Microsoft 产品能够显示的不仅仅是那些“简单”的气球提示。
以下是一些示例:

Windows 更新提示 图 2:Windows 更新气球工具提示


驱动安装提示
(来源:microsoft.com

图 3:硬件驱动程序安装气球工具提示


USB 安全移除
图 4:硬件移除工具提示(程序:USB 安全移除)



仔细查看图 2、3 和 4 会发现它们不是标准的气球工具提示!

Fig2具有不同的形状,可能来自设置Region属性。它还有一个比标准ToolTipIcon大得多的自定义图标。

Fig3使用标准形状(我认为),但它有一个自定义图标,不用说它大于默认的ToolTipIcon大小。

Fig4使用标准的ToolTipIcon,但它具有不同的形状。


我的问题是如何创建在 .NET 的通知区域中看到的任何“丰富”气球工具提示?我可以处理 WinAPI 以及它可以产生必要的输出。

4

2 回答 2

5

您必须使用 Win32 函数Shell_NotifyIcon。您可以将NOTIFYICONDATA结构的dwInfoFlags成员设置为 NIIF_USER,以便为气球工具提示使用自定义图标。

在 Windows XP Service Pack 2 和更高版本上,您可以使用hIcon成员来指定自定义图标。

在 Windows Vista 和更高版本上, NOTIFYICONDATA 结构包含附加成员hBalloonIcon。如果您已将cbSize成员设置为扩展 NOTIFYICONDATA 结构的正确大小,则可以使用此成员指定自定义图标。

于 2012-01-12T18:21:38.223 回答
0

看一下这个:

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

或者

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

其他选项是制作自己的通知表单气球,然后您将收到带有花朵背景和粉红色边框的通知 :) 顺便说一句:它也可以具有一些功能。

如本例所示:

http://i.stack.imgur.com/QtA0Y.jpg << 图片示例

根据需要创建一个表单,区域、控件等 :) 并编写如下代码:

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();
    }

顺便说一句,它们看起来都一样,具有不同的图标大小,第一个可以放在右边,而所有其他的都对齐到左边......轻微的阴影变化等:)

于 2012-01-12T14:36:02.737 回答