Check out and contribute to CodePedia, the wiki for developers.

View tempo2\TrayIcon.cls

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

corner
© 1996-2008. All rights reserved. Reproduction in whole or in part, in any form or medium without express written permission is prohibited.
Violators of this policy may be subject to legal action. Please read our Terms Of Use and Privacy Statement for more information.
Publisher: Lars Hagelin.
bootstrapLabs Logo A bootstrapLabs project.