Tempo 1.9.0.2
Submitted By:
flydog
Rating:
(Not rated) (
Rate It)
VERSION 1.0 CLASS
BEGIN
MultiUse = -1 'True
Persistable = 0 'NotPersistable
DataBindingBehavior = 0 'vbNone
DataSourceBehavior = 0 'vbNone
MTSTransactionMode = 0 'NotAnMTSObject
END
Attribute VB_Name = "TrayIcon"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
Option Explicit
Private FrmSrc As Object ''ne prendo l'icona, e il metodo creato EventoTray(Tipo as Long)
Private Valido As Boolean ''se il form e' stato impostato o no
''tipo per chiamata a shell icon
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
''modalita' di chiamata
Private Const NIM_ADD = &H0
Private Const NIM_MODIFY = &H1
Private Const NiM_DELETE = &H2
''costante che significa 'Mouse Move' per il callback
Private Const WM_MOUSEMOVE = &H200
''cosa e' valido nel tipo passato: si combinano in uFlags
Private Const NIF_MESSAGE = &H1
Private Const NIF_ICON = &H2
Private Const NIF_TIP = &H4
''API function per mettere l'icona
Private Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean
''il tipo da passare alla funzione API
Dim nid As NOTIFYICONDATA
Sub CancellaIcona()
If Valido = False Then Exit Sub
''cancella icona dal tray
Shell_NotifyIcon NiM_DELETE, nid
End Sub
Sub CreaIcona(ToolTip As String)
If Valido = False Then Exit Sub
''mette l'icona nel taskbar
''pulsante che aggiunge l'icona al tray
''imposta i membri di nid
nid.cbSize = Len(nid)
nid.hWnd = TrayForm.hWnd ''significa: gli eventi, passameli a questo oggetto!
nid.uID = vbNull ''poteva essere un qualunque ID interno
nid.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE ''tutti i possibili sono validi
nid.uCallBackmessage = WM_MOUSEMOVE ''significa: passami i mousemove
nid.hIcon = FrmSrc.Icon ''icona del form passato
nid.szTip = ToolTip & vbNullChar ''nullterminated perche' va ad una call C
''e ora aggiungo effettivamente
Shell_NotifyIcon NIM_ADD, nid
End Sub
Sub ModificaIcona(ToolTip As String)
If Valido = False Then Exit Sub
nid.hIcon = FrmSrc.Icon ''modifico solo nuova icona e nuovo tooltip
nid.szTip = ToolTip & vbNullChar ''nullterminated perche' va ad una call C
Shell_NotifyIcon NIM_MODIFY, nid ''
End Sub
Public Sub SetForm(Frm As Object)
If Valido Then Exit Sub 'impossibile impostare se lo e' gia'
''imposta il form da cui prendere icona e metodo
Valido = True
Set FrmSrc = Frm
Set TrayForm.FrmSrc = Frm
End Sub
Sub ShutDown()
If Valido = False Then Exit Sub
''chiude il form recettore degli eventi
Unload TrayForm
End Sub
Private Sub Class_Initialize()
Valido = False
Load TrayForm
End Sub
Private Sub Class_Terminate()
Unload TrayForm
End Sub