|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
[C, Win32] Menu di popup dell'icona nella tray
questo è uno dei misteri della vita che ancora non sono riuscito a risolvere.
allora: io installo un'icona nella tray con Shell_NotifyIcon e (tramite il messaggio registrato per quell'icona) ricevo notifiche come ad esempio WM_RBUTTONUP. poi facciamo che carico un menu dalle risorse dell'eseguibile (LoadMenu) e che voglio aprirlo in corrispondenza del cursore del mouse quando l'utente clicca sull'icona, cioè appunto quando ricevo WM_RBUTTONUP: dunque richiamo la GetSubMenu (visto che non si sa per quale motivo la TrackPopupMenuEx non mi funge correttamente se gli passo direttamente l'handle del menu, cioè quello resituito dalla LoadMenu) e chiamo la TrackPopupMenuEx: gli faccio aprire il menu alle coordinate che ottengo con GetCursorPos e funziona tutto tranne il fatto che quando clicco al di fuori del menu, cioè su una finestra retrostante, il c@##* di menu non si chiude. perché TUTTI i programmi del mondo riescono a farlo chiudere e io no? ![]() ![]() andbin, questa è praticamente per te, sei l'unico che ci capisca di programmazione Win32 qui dentro ![]() a meno che in questi ultimi giorni non sia giunto qualcun altro ![]() |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
![]() Guarda ... le icone nella status area della taskbar le ho usate raramente (molto raramente). Ma mi ricordo che in effetti qualche problemino c'era. Però sono problemi ormai conosciuti. Al riguardo leggi <questo> articolo della MS (l'ho trovato appena adesso). A dire il vero mi ricordo che avevo letto da qualche parte (e poi mi sembra che avessi fatto proprio così) che si doveva fare una cosa del tipo: SetForegroundWindow (hWnd); TrackPopupMenu (........); SetForegroundWindow (hWnd);
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#3 |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
omg, che vedo: workaround orribili!! schifezze simili in Win32 le ho viste veramente molto di rado... :|
dice che dovrei fare SetForegroundWindow su una mia dialog box prima di aprire il menu, ma il problema è che la maggior parte delle volte che nel mio programma l'utente clicca sull'icona io non ho nessuna finestra aperta. come si suppone che io debba fare? ![]() sono sicuro che ci sia una soluzione: per esempio il Gmail Notifier riesce a chiudere il menu anche senza sti magheggi... ![]() |
![]() |
![]() |
![]() |
#4 |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
ma la finestra su cui devo chiamare SetForegroundWindow deve essere visibile o può essere anche nascosta al momento? perché io in effetti una dialog box ce l'ho ma è appunto invisibile... per l'esattezza si tratta di una modeless dialog box.
|
![]() |
![]() |
![]() |
#5 |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
aè: funziona!!!
![]() ho usato la finestra invisibile ![]() boh, che dire... grazie per il link, certo però che ste schifezze da parte di Microsoft... ![]() |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:10.