Ikoner i aktivitetsfältet
Förord
Lägg till och ta bort ikoner/beskrivningar i aktivitetsfältet Denna artikel visar hur man med Visual Basic lägger till, ändrar och tar bort ikoner i statusfältet längst till höger i aktivitetsfältet. Aktivitetsfältet är allt till höger om startknappen och längst till höger ligger statusfältet som ger möjlighet att visa status och information om dina program. Ikoner med verktyg och tips är typiska i statusfältet. Här följer några exempel på ikoner i statusfältet:- Du kan justera strömförbrukningen på din bärbara dators batterier i förnstret som dyker upp när du klickar på batteri ikonen. En graf visar hur mycket energi du har kvar i ditt batteri.
- Du kan visa statusen på vissa program tex ICQ som visar din status om du är online eller inte mm.
- Du kan justera volymkontrollen för vissa multimedia enheter genom att klicka på ikonen och justera volymen.
Shell_NotifyIcon Funktionen
Du använder dej av Shell_NotifyIcon funktionen för att skicka ett meddelande till systemet förr att lägga till, ändra eller ta bort en ikon från statusfältet. Funktionen returnerar True om funktionen lyckades eller False om funktionen misslyckades. Argumenten för funktionen är följande:dwMessage: Ett meddelande för att köra en händelse. Denna parameter kan innehålla
följande värde:
- NIM_ADD: Lägger till en ikon i statusfältet.
- NIM_DELETE: Tar bort en ikon i statusfältet.
- NIM_MODIFY: Ändrar en ikon i statusfältet.
- pnid: En pekare till en NOTIFYICONDATA struktur. För att skicka detta argument till
funktionen, skapa en användar-definerad datatyp med namnet NOTIFYICONDATA
(visas senare i koden) och skicka datan med med typen ByVal.
Värdena på dessa meddelanden kan du hitta i filen Shellapi.h.
NOTIFYCATIONDATA strukturen innehåller följande element:
- cbSize: Skickar storleken på NOTIFYICONDATA data typ.
Data Typ: Long.
Värde: Använd Len funktionen med den deklarerade variablen. - hWnd: Handtag för fönstret som skall ta emot meddelandet.
Data Typ: Long.
Värde: Kontrollens hWnd egenskap används. - uId: Identifierare av ikonen i statusfältet.
Data Typ: Long.
Värde: Ett värde som sträcker sej innom gränserna för datatypen Long. Exemplet nedan
använder vbNull. - uFlags: Lista av flaggor som indikerar vilka av de andra medlemmar som innehåller
giltig data.
Data Typ: Long.
Värde: Någon kombination av följande konstanter för att indikera att medlemmen
i strukturen är giltig och kommer att användas: - NIF_ICON: Skickande av denna flagga indikerar att värdet för hIcon kommer att
bli den ikon som kommer visas i statusfältet. - NIF_MESSAGE: Skickande av denna flagga indikerar att uCallBackMessage
värde kommer att användas som svars meddelande. - NIF_TIP: Skickande av denna flagga indikerar att värdet för szTip kommer
användas som hjälptext (ToolTip) i statusfältet. - uCallBackMessage: Identifierare för meddelande som skcickats till fönstret
som används för att ta emot meddelanden.
Data Typ: Long.
Värde: Meddelandet som identifierar att händelse med musen har inträffat
innom den rektangulära rutan innehållande ikonen i statusfältet. - hIcon: Handtag för ikonen som visas i statusfältet.
Data Typ: Long.
Värde: Bilden som kommer användas som ikon i statusfältet. Det kan vara en
ikon egenskap hos en kontroll eller en bild från en bild kontroll eller en ikon bild. - szTip: Sträng som anvädns som hjälptext (ToolTip).
Data Typ: Fast längds sträng 64 bytes lång.
Värde: En sträng under 64 bytes.
Nästa avsnitt förklarar hur man använder funktionen i ett programexempel på hur man manipulerar ikoner i stausfältet.
Programexemplet
Exemlpet innehåller en form som innehåller två knappar och en dialogrutekontroll. När du klickar på "Add icon" sätter du följande värde i NOTIFYICONDATA.- cbSize: Längden av variablen, Len funktionen används.
- hWnd: Handtaget som används för att ta emot svarsmeddelandet från händelsen.
I exemplet används fromen för att ta emot meddelanderna. - uId: Det id som identifierar den specifika ikonen. Du kan även använda ett nummer. Nedanstående exempel använder vbNull konstanten.
- uFlags: En flagga till arrayen som indikerar vilket nummer i strikturen som är godkänd. Detta exempel visar flaggan för max antal.
- uCallBackMessage: Meddelande som skickas när en händelse med musen inträffar
på ikonen i statusfönstrer. Meddelandet mappas till en mushändelse i kontrollen som
specifierats i hWnd wärdet. - hIcon: Ikonen som skall användas i statusfönstret. Exemplet använder formens ikon.
- szTip: Hjälptext (ToolTip) strängen. Strängen måste avslutas med en null
bokstav så vbNullChar konstatnen avslutar strängen.
När alla data är satta så anropa Shell_NotifyIcon och skicka NOTIFYICONDATA med ett meddelande för att lägga till en ikon i statusfönstret.
När du för musmarkörn över ikonen i statusfönstret tar formen emot meddelandet VM_MOUSEMOV. Detta meddelande gämförs med fomens MouseEvent händelser. Argumentet X är en produkt från en av de två muskonstnstanterna som indikerar musens signaler (så som höger-, vänster klick samt enkel och dubbelklick) och TwipsPerPixelX egenskap från skärmen. Meddelandet från musen används i en select case sats för att köra vissa instruktioner.
Till exempel, när du dubbelklickar på ikonen, visas dialogrutan som låter dej välja en annan ikon. hIcon datan i NOTIFYICONDATA ändras till den nya ikonen. Shell_NotifyIcon funktionen anropas med den nya datan och ett meddelande för att ändra ikonen i statusfönstret.
Om du högerklickar på ikonen öppnas en InputBox där du kan ändra hjälptexten (ToolTip). Den nya strängen avslutas med vbNullChar konstant och szTip värdet ändras till den nya strängen. Som sedan skickas med NOTIFYICONDATA och modifierar ikonen.
När du klickar Delete Icon eller avslutar programmet anropas Shell_NotifyIcon funktionen som tar bort ikonen.
Steg för att skapa programmet
1. Starta Visual Basic och öppna ett nytt EXE projekt.2. Placera två CommandButtons och en Common dialog box på Form1.
3. Kopiera följande kod till Form1's kod fönster.
' kommentarer i mörkgrått
'Deklarerar en användardefinerad variabel som skickas till Shell_NotifyIcon funktionen.
Private 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
'Deklarerar konstanterna för API funktionen. Dessa konstanter kan finnas i Shellapi.h filen.
'Följande konstanter är meddelandet som skickas till Shell_NotifyIcon funktionen för att
'lägga till, ändra eller ta bort en ikon i statusfönstret.
Private Const NIM_ADD = &H0
Private Const NIM_MODIFY = &H1
Private Const NIM_DELETE = &H2
'Följande konstatn är meddelandet som skickas när en händelse med musen inträffar i på ikonen i
'statusfönstret.
Private Const WM_MOUSEMOVE = &H200
'Följande konstanter är flaggor som indikerar godkända medlemmar i datatypen NOTIFYICONDATA.
Private Const NIF_MESSAGE = &H1
Private Const NIF_ICON = &H2
Private Const NIF_TIP = &H4
'Följande konstanter används för att känna av aktiviteter med musen på ikonen i statusfönstret.
Vänster-klick konstanter.
Private Const WM_LBUTTONDBLCLK = &H203 'Dubbel-klick
Private Const WM_LBUTTONDOWN = &H201 'Knapp ner
Private Const WM_LBUTTONUP = &H202 'Knapp upp
'Höger-klick konstanter.
Private Const WM_RBUTTONDBLCLK = &H206 'Dubbel-klick
Private Const WM_RBUTTONDOWN = &H204 'Knapp nere
Private Const WM_RBUTTONUP = &H205 'Knapp uppe
'Deklarerar API funktionsanropet.
Private Declare Function Shell_NotifyIcon Lib "shell32" _
Alias "Shell_NotifyIconA" _
(ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean
'Dimensionerar en variabel med den användardefinerade datatypen.
Dim nid As NOTIFYICONDATA
Private Sub Command1_Click()
'Klicka på denna knappen för att lägga till en ikon i statusfönstret.
'Sätt individuella värden för NOTIFYICONDATA datatypen.
nid.cbSize = Len(nid)
nid.hWnd = Form1.hWnd
nid.uId = vbNull
nid.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
nid.uCallBackMessage = WM_MOUSEMOVE
nid.hIcon = Form1.Icon
nid.szTip = "Taskbar Status Area Sample Program" & vbNullChar
'Anropar Shell_NotifyIcon funktionen för att lägga till ikonen i statusfönstret.
Shell_NotifyIcon NIM_ADD, nid
End Sub
Private Sub Command2_Click()
'Klicka på denna knappen för att ta bort ikonen i statusfönstret.
'genom att anropa Shell_NotifyIcon funktionen.
Shell_NotifyIcon NIM_DELETE, nid
End Sub
Private Sub Form_Load()
' Sätter focus på kommandoknappen när formen laddats
Command1.Caption = "Add an Icon"
Command2.Caption = "Delete Icon"
End Sub
Private Sub Form_Terminate()
'Tar bort ikonen från statusfönstret när programmet avslutas.
Shell_NotifyIcon NIM_DELETE, nid
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
'Inträffar när nuspekaren är innanför den rektangulära ram runt ikonen i statusfönstret.
Dim msg As Long
Dim sFilter As String
msg = X / Screen.TwipsPerPixelX
Select Case msg
Case WM_LBUTTONDOWN
Case WM_LBUTTONUP
Case WM_LBUTTONDBLCLK
CommonDialog1.DialogTitle = "Select an Icon"
sFilter = "Icon Files (*.ico)|*.ico"
sFilter = sFilter & "|All Files (*.*)|*.*"
CommonDialog1.Filter = sFilter
CommonDialog1.ShowOpen
If CommonDialog1.filename <> "" Then
Form1.Icon = LoadPicture(CommonDialog1.filename)
nid.hIcon = Form1.Icon
Shell_NotifyIcon NIM_MODIFY, nid
End If
Case WM_RBUTTONDOWN
Dim ToolTipString As String
ToolTipString = InputBox("Enter the new ToolTip:", "Change ToolTip")
If ToolTipString <> "" Then
nid.szTip = ToolTipString & vbNullChar
Shell_NotifyIcon NIM_MODIFY, nid
End If
Case WM_RBUTTONUP
Case WM_RBUTTONDBLCLK
End Select
End Sub
4. Tryck F5 för att köra programmet. Klicka sedan på Add Icon för att lägga till en ikon till statusfönstret. Dubbelklicka på ikonen för att ändra ikon. Högerklicka på ikonen för att ändra hjälptext (ToolTip). Klicka på Delete för att ta bort ikonen.
Avslutningsvis
För att jag skall veta om kursen är bra eller om den måste skrivas om så rösta gärna här uppe till höger. Skicka gärna ett iMail om du vill kommentera något som är felaktigt eller du tycker borde förtydligas./Daniel Albertsson
0 Kommentarer