Newsgroup: it.comp.lang.visual-basic
Titolo: popupmenu "svogliato"

ho inserito nella sys tray l'icona di un programmino tramite la solita
'crea l'icona della sys tray
With nic
.cbSize = Len(nic)
.hIcon = Me.Icon
.hwnd = Me.hwnd
.szTip = " Caption.... " & Chr(0)
.uCallbackMessage = WM_MOUSEISMOVING
.uFlags = NIF_MESSAGE Or NIF_ICON Or NIF_TIP
.uID = 1  ' L'id della icona...
End With
Call Shell_NotifyIconA(NIM_ADD, nic)
e faccio apparire un popupmenu alla pressione del tasto destro sulla icona,
tramite l'evento
Private Sub Form_MouseMove.............
tramite il solito codice di rilevamento del tasto
If Me.ScaleMode = vbPixels Then
   msg = X
Else
   msg = X / Screen.TwipsPerPixelX
End If
Select Case msg
Case 516 'click destro: apre il menu
'lancia il popup Menu
Me.PopupMenu mnuAvvio
---------------------------
ora, facendo clik destro sulla icona nella sys tray, succede questo:
1-------------
clicco slla icona: appare il menu
clicco fuori per chiuderlo: scompare
riclicco destro sulla icona: il menu appare... tutto bene
2-------------
stessa cosa se da un opzione del menu lancio un programma esterno tramite
l'istruzione shell:
click destro: appare il menu
click sulla opzione che lancia l'eseguibile esterno (il menu scompare)
riclicco destro sulla icona: il menu appare... tutto bene
3--------------
ora da menu clicco per fare apparire un form interno al programma (show form
x) o per cambiare dei settaggi (es. escludere l'esecuzione automatica):
click destro: appare il menu
click sulla opzione che lancia il form interno o la routine interna (il menu
scompare)
riclicco destro sulla icona: il menu NON APPARE...???
riclicco destro sulla icona: il menu appare...meglio che niente ma non
benissimo...
ora la domanda č: perchč occorre cliccare DUE VOLTE per aprire il menů
nell'ultimo caso?
sembrerebbe proprio che nei primi due casi venga scaricato un qualcosa che
nel terzo caso non viene scaricato se non con un primo click destro a vuoto:
che cosa?????
ps: ovviamente l'istruzione Me.PopupMenu mnuAvvio viene letta ad ogni click
destro (ho inserito un debug.print subito prima ed uno subito dopo per
controllo)... semplicemente nel terzo caso una volta viene ignorata...
why???
ppss: ho provato a variare l' .uID dell' icona (con vbnullstring o altri
valori: non cambia esattamente nulla...)
grz

nell'ultimo caso?
-- 
ciao, hal

 Il form che hai aperto e' ancora visibile?
e soprattutto: e' modale?
Ciao
-- 
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmett L. Brown

 e soprattutto è modale?
no, non è modale
si, è ancora visibile, se lo chiudo riapro il popoup al primo click, se è
aperto ho bisogno di due click per visualizzare il popmenu.
ora, dal momento che se chiudo un form dello stesso eseguibile il programma
perde lo stato attivo ed  il controllo di windows passa al programma
precedentemente in esecuzione (stesso dicasi se clicco fuori dal popup per
chiuderlo)... e allora basta un solo click, mentre se lo lascio aperto (o se
da menu lancio una routine interna all'eseguibile) ne occorrono due, mi
sembra chiaro che al popup non piace che l'eseguibile che lo contiene sia
anche il programma al momento attivo...
solo che proprio non mi spiego: se è attivo, il primo click destro a vuoto
certamente non lo disattiva... perche allora ne occorrono due??
forse devo forzare il programma a perdere lo stato attivo con una qualche
api?