Newsgroup: it.comp.lang.visual-basic
Titolo: problema con Icona nella tray

Scusate se sarò un po lungo.
Il problema è questo:
Creo un form MDI e
gli inserisco il codice seguente
Public Sub MostraMenu()
    MsgBox
"Ciao"
End Sub
Public Sub CaricaIcona()
        hPrecedente =
SetWindowLong(hwnd, GWL_WNDPROC, AddressOf IntercettaMsg)
        Call
Shell_NotifyIcon(NIM_ADD, Nic)
End Sub
Public Sub ScaricaIcona()
Call SetWindowLong(hwnd, GWL_WNDPROC, hPrecedente)
        Call
Shell_NotifyIcon(NIM_DELETE, Nic)
End Sub
Private Sub MDIForm_Load()
Nic.cbSize = Len(Nic)
    Nic.hIcon = Icona.Icon
    Nic.hwnd =
Icona.hwnd
    Nic.szTip = "Ciao" + Chr$(0)
    Nic.uCallbackMessage =
MYTRAY_MESSAGE
    Nic.uFlags = NIF_MESSAGE + NIF_ICON + NIF_TIP
Nic.uID = 1
    Call CaricaIcona
End Sub
Private Sub
MDIForm_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    Call
ScaricaIcona
End Sub
Dopo di che creo un modulo e gli inserisco il
seguente codice
Public Declare Function SetWindowLong Lib "user32" Alias
"SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong
As Long) As Long
Public Declare Function SetForegroundWindow Lib "user32"
(ByVal hwnd As Long) As Long
Public Declare Function Shell_NotifyIcon Lib
"shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As
NOTIFYICONDATA) As Long
Public Declare Function CallWindowProc Lib
"user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd
As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As
Long
Public Declare Function DefWindowProc Lib "user32" Alias
"DefWindowProcA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As
Long, ByVal lParam As Long) As Long
Public Const GWL_STYLE = (-16)
Public Const WS_POPUP = &H80000000
Public Const GWL_WNDPROC = (-4&)
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 Const GENERIC_READ = &H80000000
Public Const GENERIC_WRITE
= &H40000000
Public Const OPEN_EXISTING = 3
Public Const
INVALID_HANDLE_VALUE = -1
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 MYTRAY_MESSAGE = &H501&
Public hPrecedente As
Long
Public Nic As NOTIFYICONDATA
Public Function IntercettaMsg(ByVal
hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As
Long) As Long
    If Msg = MYTRAY_MESSAGE Then
        Select Case lParam
Case WM_LBUTTONUP:
                Icona.Show
            Case
WM_RBUTTONUP:
                Call Icona.MostraMenu
            Case
WM_LBUTTONDBLCLK:
            Case WM_RBUTTONDBLCLK:
            Case
Else:
                Call DefWindowProc(hwnd, Msg, wParam, lParam)
End Select
    End If
    IntercettaMsg = CallWindowProc(hPrecedente,
hwnd, Msg, wParam, lParam)
End Function
Sapete cosa succede ? Tutto
funziona perfettamente !!!!!
Allora non capisco perchè gli stessi pezzi di
codice messi nella mia applicazione, che prevede anch'essa un form MDI e
dei Child con dei moduli, la mandano in errore. Se faccio girare
l'applicazione da VB sotto WIN 2000, quando la chiudo esco anche dal
progetto VB (chiude VB). Mentre sotto Win9x mi dà un errore relativo al
kernel.
Secondo voi cosa può essere ?
Grazie a tutti.
Ciao,
Claudio.
--------------------------------
Inviato via 
http://usenet.iol.it

 Secondo voi cosa può essere ?
Non hai chiuso l'icona all'uscita..
Ciao
--
Timothy Redaelli
P.S. C'era un messaggio di poco tempo fa

A parte il fatto che nel codice c'era scritto:
Private Sub
MDIForm_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    Call
ScaricaIcona
End Sub
ma poi mi sembrava di aver letto su un articolo dal SC che non c'era bisogno
di scaricarla per forza.
In ogni caso ho scaricato l'icona.
Ciao, Claudio.