Я помещаю превосходный ответ JLBorges на аналогичный вопрос дословно из cplusplus.com, так как это наиболее краткое объяснение, которое я прочитал по этому вопросу.
] В шаблоне, который мы пишем, есть два типа имен, которые можно использовать - зависимые имена и не зависимые имена. Зависимое имя - это имя, которое зависит от параметра шаблона; неизменяемое имя имеет то же значение, независимо от параметров шаблона.
Например:
template< typename T > void foo( T& x, std::string str, int count ) { // these names are looked up during the second phase // when foo is instantiated and the type T is known x.size(); // dependant name (non-type) T::instance_count ; // dependant name (non-type) typename T::iterator i ; // dependant name (type) // during the first phase, // T::instance_count is treated as a non-type (this is the default) // the typename keyword specifies that T::iterator is to be treated as a type. // these names are looked up during the first phase std::string::size_type s ; // non-dependant name (type) std::string::npos ; // non-dependant name (non-type) str.empty() ; // non-dependant name (non-type) count ; // non-dependant name (non-type) }
То, что зависит от зависимого имени, может быть чем-то другим для каждого конкретного экземпляра шаблона. Как следствие, шаблоны C ++ подвержены «двухфазному поиску имен». Когда шаблон сначала анализируется (до того, как выполняется какое-либо создание), компилятор просматривает не зависящие имена. Когда происходит конкретное создание шаблона, параметры шаблона известны к тому времени, и компилятор ищет зависимые имена.
На первом этапе анализатор должен знать, является ли зависимое имя именем типа или имени не-типа. По умолчанию зависимым именем считается имя не-типа.
Использовать ключевое слово typename только в объявлениях шаблонов и определениях, приведенных ниже.
blockquote>у вас есть квалифицированное имя, которое относится к типу и зависит от параметра шаблона.
Во-первых, добавьте управление NotifyIcon к Форме. Затем обеспечьте электричеством Уведомлять Значок, чтобы сделать то, что Вы хотите.
, Если Вы хотите, чтобы это скрылось к лотку на, минимизируют, пробуют это.
Private Sub frmMain_Resize(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Resize
If Me.WindowState = FormWindowState.Minimized Then
Me.ShowInTaskbar = False
Else
Me.ShowInTaskbar = True
End If
End Sub
Private Sub NotifyIcon1_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles NotifyIcon1.MouseClick
Me.WindowState = FormWindowState.Normal
End Sub
я буду иногда использовать текст Воздушного шара для уведомления пользователя - который сделан как таковой:
Me.NotifyIcon1.ShowBalloonTip(3000, "This is a notification title!!", "This is notification text.", ToolTipIcon.Info)
Можно добавить компонент NotifyIcon от панели инструментов на основную форму.
Это имеет события, такие как MouseDoubleClick, который можно использовать для обработки различных событий.
Редактирование: необходимо удостовериться, что Вы устанавливаете свойство Icon на допустимый .ico файл, если Вы хотите, чтобы оно обнаружилось правильно в systray.
Миленькое учебное руководство при использовании класса NotifyIcon здесь: http://www.developer.com/net/csharp/article.php/3336751
Это показывает и обрабатывает все комбинации щелчка мышью для NotifyIcon
Больше здесь: https://archive.codeplex.com/? p=notifyicon
Добавьте компонент NotifyIcon к своей форме. И используйте, это - события для обработки щелчков мышью.