我一直在想,无论何时调用ShowBalloonTip
类的NotifyIcon
方法,都会得到这样的气球工具提示:
图1:标准气球工具提示
某些应用程序和Microsoft产品能够显示的不仅仅是那些“简单”的气球提示
以下是一些示例:
图2:Windows Update气球工具提示
Driver Installation Tip http://i.msdn.microsoft.com/dynimg/IC295019.png
图3:硬件驱动程序安装气球工具提示
图4:硬件删除工具提示(程序:USB安全删除)
仔细看看图2,3和4显示它们不是标准的气球工具提示!
Fig2 具有不同的形状,可能来自设置Region
属性。它还有一个比标准ToolTipIcon大得多的自定义图标。
Fig3 使用标准形状(我认为),但它有一个自定义图标,不用说大于默认ToolTipIcon尺寸。
Fig4 使用标准ToolTipIcon,但它有不同的形状。
我的问题是如何创建在.NET的通知区域中看到的任何“丰富”气球工具提示?我可以处理WinAPI,也可以产生必要的输出。
答案 0 :(得分:5)
您必须使用Win32函数Shell_NotifyIcon。您可以将NOTIFYICONDATA结构的 dwInfoFlags 成员设置为NIIF_USER,以便为气球工具提示使用自定义图标。
在Windows XP Service Pack 2及更高版本中,您可以使用 hIcon 成员指定自定义图标。
在Windows Vista及更高版本中,NOTIFYICONDATA结构包含附加成员 hBalloonIcon 。如果已将 cbSize 成员设置为扩展NOTIFYICONDATA结构的正确大小,则可以使用此成员指定自定义图标。
答案 1 :(得分: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 <<图像示例
根据需要创建表单,Region,Controls,Etc :) 和代码类似:
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();
}
BTW他们看起来都有点相同,图标大小不同, 并且第一个可以适合右边,而所有其他都与左边对齐... 小阴影变化等等:)