Использование панели задач непосредственно из Visual Basic

Переводы статьи Переводы статьи
Код статьи: 176085 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

В этой статье

Аннотация

В этой статье показано, как использовать все преимущества Панели задач Windows или значка на панели задач, с помощью Visual Basic. Он в области уведомлений панели задач, которая будет помещает значок вами Отображение всплывающей подсказки по вашему выбору, когда мышь rested на него, будет восстановлена приложения, при нажатии и отобразится всплывающее меню при щелкнули правой кнопкой мыши. Это все это возможно из-за возможности Visual Basic непосредственно обрабатывать обратные вызовы, поэтому преимущества полной функцией Shell_NotifyIcon который экспортируются Shell32.dll.

Дополнительная информация

Следующий пример можно добавить любой Visual Basic Проект, который имеет по крайней мере одну форму и стандартного модуля.

Пошаговый пример

  1. Добавьте следующий код в раздел объявлений стандартный модуль проекта:
          'user defined type required by Shell_NotifyIcon API call
          Public Type NOTIFYICONDATA
           cbSize As Long
           hwnd As Long
           uId As Long
           uFlags As Long
           uCallBackMessage As Long
           hIcon As Long
           szTip As String * 64
          End Type
    
          'constants required by Shell_NotifyIcon API call:
          Public Const NIM_ADD = &H0
          Public Const NIM_MODIFY = &H1
          Public Const NIM_DELETE = &H2
          Public Const NIF_MESSAGE = &H1
          Public Const NIF_ICON = &H2
          Public Const NIF_TIP = &H4
          Public Const WM_MOUSEMOVE = &H200
          Public Const WM_LBUTTONDOWN = &H201     'Button down
          Public Const WM_LBUTTONUP = &H202       'Button up
          Public Const WM_LBUTTONDBLCLK = &H203   'Double-click
          Public Const WM_RBUTTONDOWN = &H204     'Button down
          Public Const WM_RBUTTONUP = &H205       'Button up
          Public Const WM_RBUTTONDBLCLK = &H206   'Double-click
    
          Public Declare Function SetForegroundWindow Lib "user32" _
          (ByVal hwnd As Long) As Long
          Public Declare Function Shell_NotifyIcon Lib "shell32" _
          Alias "Shell_NotifyIconA" _
          (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean
    
          Public nid As NOTIFYICONDATA
    					
  2. Добавьте следующий код в любой форме, в проекте, что вы ответить на значок на панели задач или значок уведомления для вашего приложение:
          Private Sub Form_Load()
           'the form must be fully visible before calling Shell_NotifyIcon
           Me.Show
           Me.Refresh
           With nid
            .cbSize = Len(nid)
            .hwnd = Me.hwnd
            .uId = vbNull
            .uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
            .uCallBackMessage = WM_MOUSEMOVE
            .hIcon = Me.Icon
            .szTip = "Your ToolTip" & vbNullChar
           End With
           Shell_NotifyIcon NIM_ADD, nid
          End Sub
    
          Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
          'this procedure receives the callbacks from the System Tray icon.
          Dim Result As Long
          Dim msg As Long
           'the value of X will vary depending upon the scalemode setting
           If Me.ScaleMode = vbPixels Then
            msg = X
           Else
            msg = X / Screen.TwipsPerPixelX
           End If
           Select Case msg
            Case WM_LBUTTONUP        '514 restore form window
             Me.WindowState = vbNormal
             Result = SetForegroundWindow(Me.hwnd)
             Me.Show
            Case WM_LBUTTONDBLCLK    '515 restore form window
             Me.WindowState = vbNormal
             Result = SetForegroundWindow(Me.hwnd)
             Me.Show
            Case WM_RBUTTONUP        '517 display popup menu
             Result = SetForegroundWindow(Me.hwnd)
             Me.PopupMenu Me.mPopupSys
           End Select
          End Sub
    
          Private Sub Form_Resize()
           'this is necessary to assure that the minimized window is hidden
           If Me.WindowState = vbMinimized Then Me.Hide
          End Sub
    
          Private Sub Form_Unload(Cancel As Integer)
           'this removes the icon from the system tray
           Shell_NotifyIcon NIM_DELETE, nid
          End Sub
    
          Private Sub mPopExit_Click()
           'called when user clicks the popup menu Exit command
           Unload Me
          End Sub
    
          Private Sub mPopRestore_Click()
           'called when the user clicks the popup menu Restore command
           Dim Result As Long
           Me.WindowState = vbNormal
           Result = SetForegroundWindow(Me.hwnd)
           Me.Show
          End Sub
    					
  3. Установите следующие параметры свойств в той же форме, чтобы который добавлен приведенный выше код:
       Property         Required Setting for Taskbar Notification Area example
       -----------------------------------------------------------------------
       Icon           = The icon you want to appear in the system tray.
       Minbutton      = True
       ShownInTaskbar = False
    					
  4. Добавьте следующие элементы меню формы использования Редактор меню:
       Caption      Name          Enabled   Visible   Position
       ---------------------------------------------------------
       &SysTray     mPopupSys      True      False    Main Level
       &Restore     mPopRestore    True      True     Inset one
       &Exit        mPopExit       True      True     Inset one
    					
При необходимости можно добавить дополнительных пунктов меню.

Гибкость области уведомлений панели задач

Изменить подсказку, которая появляется над уведомления значок, изменив следующую строку в процедуре Form_Load:
   .szTip = "Your ToolTip" & vbNullChar
				
Замените текст, который будет отображаться «Your подсказки».

Можно изменить значок, который отображается в области уведомлений панели задач Изменение процедуры Form_Load следующую строку:
   .hIcon = Me.Icon
				
Замените Me.Icon на любой значок проекта.

Можно изменить Параметры области уведомлений панели задач в любое время после использования Константа NIM_ADD, переназначение значения в переменной nid, а затем с помощью Следующий вариант вызова Shell_NotifyIcon API:
   Shell_NotifyIcon NIM_MODIFY, nid.
				
Тем не менее если требуется, чтобы различные формы для получения обратного вызова, то необходимо сначала удалить текущий значок с помощью "Shell_NotifyIcon NIM_Delete, nid"как функция NIM_Modify не будет принимать новые Hwnd, или необходимо будет Добавьте еще один значок systray новой формы с помощью "Shell_NotifyIcon NIM_ADD nid"после пополнения nid типа с новым форм Hwnd. Вы можете также объявите отдельные копии типа nid для каждой формы, которую требуется Отображать значок на панели задач Windows и изменить их в каждой форме Активируйте события с помощью последовательности NIM_DELETE и NIM_ADD.

Ссылки

Дополнительную информацию по с помощью панели задач или области уведомлений из Visual Basic 4.0 или более ранней версии обратитесь к следующей статье базы знаний Майкрософт:
149276Использование значков с Windows 95/98/Me области уведомлений панели задач

Свойства

Код статьи: 176085 - Последний отзыв: 4 июня 2011 г. - Revision: 4.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic Control Creation Edition
  • Microsoft Visual Basic 5.0 Learning Edition
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
Ключевые слова: 
kbbug kbhowto kbmt KB176085 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:176085

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com