Как создать богатые всплывающие подсказки и всплывающие подсказки в области уведомлений - PullRequest
10 голосов
/ 12 января 2012

Мне было интересно, что всякий раз, когда вы вызываете метод ShowBalloonTip класса NotifyIcon, вы получаете всплывающую подсказку:

Standard Baloon Tip
Fig1: Стандартная всплывающая подсказка



Некоторые приложения и продукты Microsoft могут отображать не только «простые» всплывающие подсказки.
Вот несколько примеров:

Windows Update Tip Рис. 2: всплывающая подсказка Центра обновления Windows


Совет по установке драйвера http://i.msdn.microsoft.com/dynimg/IC295019.png
Рис. 3. Всплывающая подсказка об установке драйвера оборудования


USB Safely Remove
Рис. 4: Всплывающая подсказка удаления оборудования (Программа: USB Safely Remove)



Хороший взгляд на рисунки 2, 3 и 4 показывает, что они не являются стандартными всплывающими подсказками!

Fig2 имеет другую форму, возможно, от установки свойства Region. Он также имеет пользовательский значок, который намного больше, чем стандартный ToolTipIcon .

Fig3 использует стандартную форму (я думаю), но у нее есть собственный значок, который, разумеется, больше, чем стандартный ToolTipIcon size.

Fig4 использует стандартный ToolTipIcon , но имеет другую форму.


Мой вопрос заключается в том, как создать какие-либо всплывающие подсказки, которые отображаются в области уведомлений в .NET? Я могу работать с WinAPI так же, как он может выдавать необходимый вывод.

Ответы [ 2 ]

5 голосов
/ 12 января 2012

Вы должны использовать функцию Win32 Shell_NotifyIcon . Вы можете установить dwInfoFlags члена структуры NOTIFYICONDATA в NIIF_USER, чтобы использовать пользовательский значок для всплывающей подсказки.

В Windows XP с пакетом обновления 2 (SP2) и более поздних версий вы можете использовать элемент hIcon , чтобы указать пользовательский значок.

В Windows Vista и более поздних версиях структура NOTIFYICONDATA содержит дополнительный член hBalloonIcon . Этот элемент можно использовать для указания пользовательского значка, если для элемента cbSize задан правильный размер расширенной структуры NOTIFYICONDATA.

0 голосов
/ 12 января 2012

Проверьте это:

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

или

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

Другой вариант - сделать свой собственный шар уведомлений, тогда у вас будет уведомление с цветами фона и розовыми рамками :) КСТАТИ: в этом тоже может быть какая-то функциональность.

Как в этом примере:

http://i.stack.imgur.com/QtA0Y.jpg << Пример изображения </p>

Создайте форму, как вам нравится, Регион, Элементы управления и т. Д. :) и код что-то вроде:

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

Кстати, все они выглядят примерно одинаково, с разным размером значка, и Первый мог бы соответствовать правому, в то время как все другие выровнены к левому ... незначительные изменения оттенка и т. д.:)

...