Použití panelu systému přímo z aplikace Visual Basic

Překlady článku Překlady článku
ID článku: 176085 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Souhrn

Tento článek ukazuje, jak využít Hlavním panelu systému Windows, nebo v oznamovací oblasti hlavního panelu pomocí jazyka Visual Basic. Jeho ikonu podle vašeho výběru vloží do oznamovací oblasti hlavního panelu, která bude zobrazení popisu tlačítka podle vašeho výběru myší je vyložena nad ním, a obnovit Při klepnutí a zobrazí se nabídka aplikace při klepli pravým tlačítkem myši. Důvodem jsou všech možných jazyka Visual Basic schopnost přímo manipulovat. zpětná volání, proto bere plně využívat všechny funkce Shell_NotifyIcon která je vyvážená Shell32.dll.

Další informace

V následujícím příkladu mohou být přidány do jakékoli aplikace Visual Basic Projekt, který má alespoň jeden formulář a standardní modul.

Podrobný příklad

  1. Přidejte následující kód do deklarační sekce standardní modul v projektu:
          '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. Přidejte že následující kód pro všechny formuláře v projektu Chcete reagovat na ikonu na hlavním panelu nebo ikona, pro vaše aplikace:
          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. Proveďte následující nastavení vlastnosti na stejném formuláři které jste přidali výše uvedený kód:
       Property         Required Setting for Taskbar Notification Area example
       -----------------------------------------------------------------------
       Icon           = The icon you want to appear in the system tray.
       Minbutton      = True
       ShownInTaskbar = False
    					
  4. Přidejte následující položky do stejné pomocí formuláře Editor nabídky:
       Caption      Name          Enabled   Visible   Position
       ---------------------------------------------------------
       &SysTray     mPopupSys      True      False    Main Level
       &Restore     mPopRestore    True      True     Inset one
       &Exit        mPopExit       True      True     Inset one
    					
Podle potřeby můžete přidat další položky.

Pružnost oblasti upozornění hlavního panelu

Můžete změnit popisek, který se zobrazí nad oznámení Ikona změnou v proceduře Form_Load následující řádek:
   .szTip = "Your ToolTip" & vbNullChar
				
"Vaše ToolTip" nahraďte text, který chcete zobrazit.

Můžete změnit na ikonu zobrazenou v oznamovací oblasti na hlavním panelu podle Změna v postupu Form_Load následující řádek:
   .hIcon = Me.Icon
				
Me.Icon nahraďte některou z ikon v projektu.

Můžete změnit kdykoli po použití nastavení oznamovací oblasti hlavního panelu NIM_ADD konstanta přiřazení hodnoty proměnné nid a potom pomocí Následující změna volání rozhraní API Shell_NotifyIcon:
   Shell_NotifyIcon NIM_MODIFY, nid.
				
Ale pokud chcete, aby jiný formulář pro příjem zpětného volání a potom bude nutné nejprve odstranit aktuální ikonu pomocí "Shell_NotifyIcon NIM_Delete, nID"jako funkce NIM_Modify nebude přijímat nové Hwnd nebo bude nutné přidáte jinou ikonu systray nového formuláře pomocí "Shell_NotifyIcon NIM_ADD, nid"po doplňování typ nid s novým tvoří Hwnd. Je možné také Deklarujte samostatné kopie typu nid pro každý formulář, který chcete Zobrazit ikonu na hlavním panelu systému Windows a změnit je v každém formuláři Aktivujte pomocí NIM_DELETE a NIM_ADD posloupnosti událostí.

Odkazy

Další informace o hlavním panelu systému pomocí nebo oznamovací oblasti hlavního panelu v aplikaci Visual Basic 4.0 nebo starší klepněte na následující číslo článku databáze Microsoft Knowledge Base:
149276Jak používat ikony s Windows 95/98/Me oznamovací oblasti hlavního panelu

Vlastnosti

ID článku: 176085 - Poslední aktualizace: 23. dubna 2011 - Revize: 4.0
Informace v tomto článku jsou určeny pro produkt:
  • 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
Klíčová slova: 
kbbug kbhowto kbmt KB176085 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:176085

Dejte nám zpětnou vazbu

 

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