Ciao,
utilizzo questo codice ( How to use the System Tray directly from Visual Basic ) per minimizzare i miei programmi nella SysTray, ora però ho fatto un progetto con MDI + FormFiglie e questo codice non funziona, grazie all'aiuto di TheTruster ho fatto delle modifiche, ma ancora non funziona come dovrebbe, ecco la situazione:
FUNZIONA
* Icona visualizzata in SysTray
NON FUNZIONA
* visualizzazione Menu al click col destro in SysTray
* ... di conseguenza imposibile testare il resize/altro ...
CODICE
codice:Private Sub MDIForm_Load() '##### Gestisco NotifyIcon in SysTray ##### 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 = "TooTip" & vbNullChar End With Shell_NotifyIcon NIM_ADD, nid End Subcodice:Private Sub MDIForm_QueryUnload(Cancel As Integer, UnloadMode As Integer) If UnloadMode = vbFormControlMenu Then 'Dim risp As Integer 'risp = MsgBox("Il programma è stato minimizzato sulla SystemTray", vbExclamation) Me.Hide Cancel = True End If End Subcodice:Private Sub MDIForm_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Dim Result As Long Dim msg As Long msg = X / Screen.TwipsPerPixelX Select Case msg ' Case WM_LBUTTONUP ' Me.WindowState = vbNormal ' Result = SetForegroundWindow(Me.hwnd) ' Me.Show Case WM_LBUTTONDBLCLK Me.WindowState = vbNormal Result = SetForegroundWindow(Me.hwnd) Me.Show Case WM_RBUTTONUP Result = SetForegroundWindow(Me.hwnd) Me.PopupMenu Me.mPopupSys End Select End Subcodice:Private Sub MDIForm_Resize() If Me.WindowState = vbMinimized Then Me.Hide End Subcodice:Private Sub mPopRestore_Click() Dim Result As Long Me.WindowState = vbNormal Result = SetForegroundWindow(Me.hwnd) Me.Show End Subcodice:Private Sub mPopExit_Click() Unload Me End Subcodice:Private Sub MDIForm_Unload(Cancel As Integer) Shell_NotifyIcon NIM_DELETE, nid End Sub
Qualcuno riesce a trovare l'errore?codice:Option Explicit '##### modulo.bas --> Dichiaro il necessario per ridurre in SysTray ##### 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 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 Public Const WM_LBUTTONUP = &H202 Public Const WM_LBUTTONDBLCLK = &H203 Public Const WM_RBUTTONDOWN = &H204 Public Const WM_RBUTTONUP = &H205 Public Const WM_RBUTTONDBLCLK = &H206 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![]()

Rispondi quotando