Как создавать богатые всплывающие подсказки и богатые воздушные шары в области уведомлений
Мне было интересно, что всякий раз, когда вы вызываете ShowBalloonTip
метод класса NotifyIcon
, вы получаете всплывающую подсказку:
![Standard ShowBalloonTip Standard Baloon Tip]()
Fig1: Стандартная всплывающая подсказка
Некоторые приложения и продукты Microsoft могут отображать не только "простые" всплывающие подсказки.
Вот несколько примеров:
Рис. 2. Всплывающая подсказка Центра обновления Windows
![Device Driver Balloon Tooltip Driver Installation Tip]()
(источник: microsoft.com)
Рис. 3. Всплывающая подсказка об установке драйвера оборудования
![Device removal: USB Safely Remove USB Safely Remove]()
Рис. 4. Подсказка по удалению оборудования (Программа: USB Safely Remove)
Хороший взгляд на рисунки 2, 3 и 4 показывает, что они не являются стандартными всплывающими подсказками!
Fig2 имеет другую форму, возможно, от настройки свойства Region
. Он также имеет собственный значок, который намного больше, чем стандартный ToolTipIcon.
На рисунке 3 используется стандартная форма (я думаю), но у нее есть собственный значок, который, разумеется, больше размера ToolTipIcon по умолчанию.
На рисунке 4 используется стандартный ToolTipIcon, но он имеет другую форму.
Мой вопрос заключается в том, как создать какие-либо всплывающие подсказки, которые отображаются в области уведомлений в .NET? Я могу обрабатывать WinAPI, а также он может производить необходимый вывод.
Ответы
Ответ 1
Вам нужно использовать функцию Win32 Shell_NotifyIcon. Вы можете установить член dwInfoFlags структуры NOTIFYICONDATA в NIIF_USER, чтобы использовать пользовательский значок для всплывающей подсказки.
В Windows XP с пакетом обновления 2 и более поздних версий вы можете использовать элемент hIcon для указания пользовательского значка.
В Windows Vista и позже структура NOTIFYICONDATA содержит дополнительный член hBalloonIcon. Вы можете использовать этот элемент, чтобы указать пользовательский значок, если вы установили член cbSize в правильный размер расширенной структуры NOTIFYICONDATA.
Ответ 2
Проверьте это:
http://www.codeproject.com/KB/WPF/WPF_TaskbarNotifier.aspx
или
www.codeproject.com/KB/WPF/wpf_notifyicon.aspx
Другой вариант - создать свой собственный форму для уведомления,
то у вас будет уведомление с цветами фона и розовых границ:)
BTW: у него также могут быть некоторые функции.
Как в этом примере:
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();
}
Кстати, все они выглядят одинаково, с разными размерами значков,
и Первый может поместиться вправо, а все остальные выровнены влево...
незначительные изменения оттенков и т.д.:)