Newsgroup: it.comp.lang.visual-basic
Titolo: [Help] - Iconizzazione in SystemTray

Ciao a tutti, qualcuno mi sa dare una mano nel risolvere questo problema?
Dunque ho realizzato un applicativo che tramite la pressione del tasto di
riduzione ad icona, nasconde il form principale e crea l'icona nella
SystemTray.
Dopodiche in base alla pressione dei tasti del mouse, ripristina
nuovamente il form oppure apre un menu popup.
Fino a quando sono in ambiente di sviluppo tutto funziona egregiamente,
ma nel momento in cui compilo l'applicativo e lancio l'eseguibile,
questo, una volta iconizzato, non ne vuole più sapere di riconoscere gli
eventi del mouse e sono costretto a chiuderlo direttamente dal task
manager.
Da cosa può dipendere?
Grazie a tutti coloro che mi aiuteranno.
-- 
Bye
_________________________
MFSoft
mail: 
mfs...@libero.it
http://shark.tbo.it
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Da cosa può dipendere?
Spiegati meglio, magari con spezzoni di codice: in quale modo riconosci 
gli eventi del mouse quando il programma e' nel tray (ossia e' Hide)?
-- 
Ciao!
    -DocDoc-
--- Per scrivermi: docdoc()
sertel.net
Sei anche tu stanco dei messaggi spam? Usa Terminator, il programma
anti-spam italiano FREEWARE!     
http://www.spamterminator.it/

 gli eventi del mouse quando il programma e' nel tray (ossia e' Hide)?
Dunque, per prima cosa l'evento di resize del form ( premetto si tratta di
un MDI, potrebbe forse dipendere da questo? )
Private Sub MDIForm_Resize()
   If Me.WindowState = vbMinimized Then
      Me.Hide
      ShowIcon Me
   End If
End Sub
e qui di seguito la procedura che richiamo nel momento in cui il form 
viene iconizzato:
Public Sub ShowIcon(ByRef TrayForm As Form)
   SysIcon.cbSize = Len(SysIcon)
   SysIcon.hwnd = TrayForm.hwnd
   SysIcon.uID = vbNull
   SysIcon.uFlags = NIF_MESSAGE Or NIF_ICON Or NIF_TIP
   SysIcon.uCallbackMessage = WM_MOUSEMOVE
   SysIcon.hIcon = TrayForm.Icon
   SysIcon.szTip = TrayForm.Caption + Chr(0)
   Shell_NotifyIcon NIM_ADD, SysIcon
   RunningInTray = True
End Sub
Il riconoscimento invece dell' evento mouse è il seguente:
Private Sub MDIForm_MouseMove(Button As Integer, Shift As Integer, x As
Single, y As Single)
 
   Dim result As Long
   Dim MSG As Long
 
   If RunningInTray Then
 
      MSG = (x And &HFF) * &H100
      Select Case MSG
         Case 0                           ' Mouse Moves
         Case &HC00, &HF00                ' Left Mouse Down
         Case &H1E00                      ' Left Mouse Up
 
         Case &H2D00                      ' Left Mouse Double Click
             Me.WindowState = vbNormal
             result = SetForegroundWindow(Me.hwnd)
             Me.Show
             RemoveIcon Me
         ...
         ...
Spero possa bastare.
Grazie ancora


 un MDI, potrebbe forse dipendere da questo? )
Dopo un'intera giornata di prove e controprove, sono riuscito a risolvere
il quesito.
Grazie a tutti comunque


 il quesito.
Beh, allora dicci cos'era il problema...;-)


> Beh, allora dicci cos'era il problema...;-)
Certamente, tutto è da attribuirsi, non so ancora il perchè, alla toolbar
presente all'interno del form, classico o MDI che sia non ha importanza.
Nel momento in cui si effettua la Resize, si deve anche disabilitare la
toolbar, la quale altrimenti non consente il riconoscimento dell'evento
MouseMove sul form.
( Bisogna solo poi ricordarsi di riabilitarla nel momento in cui si
rispristina il form )
Quello che è strano ripeto è che in sviluppo funziona, ma nell'eseguibile
invece non c'è verso.
Cmq l'importante è che funzioni, ci ho già perso troppo tempo dietro.  ;o)


 Cmq l'importante è che funzioni, ci ho già perso troppo tempo dietro.  ;o)
Solitamente e' questo l'importante, ma se trovi un metodo che ti evita 
questo tipo di grattacapo e' meglio, no?...;-)))
