fusebyte (Normal User)
Expert
Messaggi: 332
Iscritto: 24/12/2008
|
ricapitolando ecco cosa ho fatto e modificato:
Codice sorgente - presumibilmente VB.NET |
Private Sub Timer1_Timer() 'Cicla le icone Static mPic As Integer Me.Icon = imgIcon(mPic).Picture TrayI.hIcon = imgIcon(mPic).Picture mPic = mPic + 1 If mPic = 14 Then mPic = 0 ' cicla 15 icone e si azzera per ricominciare Shell_NotifyIcon NIM_MODIFY, TrayI End Sub
|
Codice sorgente - presumibilmente VB.NET |
Public Sub AddToTray(Form1 As Form, ToolTip As String, Icon) On Error Resume Next TrayI.cbSize = Len(TrayI) TrayI.hWnd = pichook.hWnd 'Linka la trayicon in questa picture TrayI.uId = 1& TrayI.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE TrayI.ucallbackMessage = WM_LBUTTONDOWN TrayI.hIcon = imgIcon(2).Picture ' questo gestisce insieme al TIMER,14 icone TrayI.szTip = "Fatturazione" & Chr$(0)' aggiungo Chr$ per evitare caratteri strani 'Creo l'icona Shell_NotifyIcon NIM_ADD, TrayI Form1.WindowState = vbNormal ' setto lo stato Normal Me.Hide End Sub
|
Dopodiche',su tuo consiglio
Codice sorgente - presumibilmente VB.NET |
Private Sub Form_Resize() If Form1.WindowState = vbMinimized Then 'se cliccl MINBUTTON AddToTray Form1, "Fatturazione", TrayI.hIcon End If End Sub
|
premendo il MINBUTTON si riduce correttamente ad icona
Ora devo gestire l'evento doppio click sulla ICONTRAY per riaprire il soft e qui casca l'asino,
Codice sorgente - presumibilmente VB.NET |
Private Sub Form_MouseUp(TrayI As Integer, Shift As Integer, x As Single, y As Single) If TrayI = vbLeftDoubleButton_Click Then Form1.WindowState = vbNormal End If End Sub
|
Cosi' non funziona.
Ho cercato cosa potesse comandare il mouse ed ho trovato l'Evento MOUSEUP,ho tentato qualche combinazione ,ma sinceramente non conosco troppo il comando e vado per tentativi e so di sbagliare
Puoi aiutarmi in questo?
Per esempio ,se volessi includere anche un popmenu' questo lo dovrei scrivere diversamente avendo gia' tutto nel FORM1
Codice sorgente - presumibilmente Plain Text |
form1.popupmenu form2.NomeMenu 'devi creare un form2 con il menu
|
Ciao
Ultima modifica effettuata da fusebyte il 11/09/2009 alle 11:14 |
|
GrG (Member)
Guru^2
Messaggi: 3430
Iscritto: 21/08/2007
|
la sub interessata non è il mouseup ma il mousemove
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim Msg As Long
Msg = X / Screen.TwipsPerPixelX
If Msg = WM_LDBCLICK Then 'click tasto sinistro
'CODICE per far apparire un menù
form1.popupmenu form2.NomeMenu 'devi creare un form2 con il menu
'CODICE per farlo tornare normale:
'Form1.WindowState = vbNormal
'Call RemoveFromTray
'Form1.Show
'--------------
End If
End Sub
te lo avevo scritto all'inizio... il codice quindi è:
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim Msg As Long
Msg = X / Screen.TwipsPerPixelX
If Msg = WM_LDBCLICK Then 'click tasto sinistro
Form1.WindowState = vbNormal
Call RemoveFromTray
Form1.Show
End If
End Sub
|
|
fusebyte (Normal User)
Expert
Messaggi: 332
Iscritto: 24/12/2008
|
Non è che non ti voglio dare retta,è che non funziona,per questo ho tentato di provare altro.
Io inserisco come mi suggerisci:
Codice sorgente - presumibilmente VB.NET |
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Dim Msg As Long Msg = X / Screen.TwipsPerPixelX If Msg = WM_LBUTTONDBLCLK Then 'click tasto sinistro Form1.WindowState = vbNormal Call RemoveFromTray Form1.Show End If End Sub
|
perche' ho dichiarato
WM_LBUTTONDBLCLK = &H203
ma la sostanza non cambia,quello che conta e' il &H203.
Non capisco perche' una volta MINIMIZZATO non risponde ne a click DX che a click SX del Mouse e come detto,devo aprire il TASK per chiuderlo.
Se il codice fosse errato non dovrebbe neanche ridursi a icona,invece fino a quel punto
il codice funziona.
E' questo MouseMove che non vuole andare.
Potrebbe il problema essere,che ci sono 15 icone che ciclano come ben vedi nel Timer?
PS No,ho messo un Timer1.Enabled = False,in modo da avere un'icona fissa ma il mouse continua a non rispondere ne a DX ne a SX sopra la icontray)
Ciao
Ultima modifica effettuata da fusebyte il 11/09/2009 alle 11:23 |
|
fusebyte (Normal User)
Expert
Messaggi: 332
Iscritto: 24/12/2008
|
Senza nulla togliere a GRG,che non so come ringraziare per gli aiuti che mi sta dando, ma TheProgrammer che ne pensa? :-))
Ciao
Ultima modifica effettuata da fusebyte il 11/09/2009 alle 11:22 |
|
GrG (Member)
Guru^2
Messaggi: 3430
Iscritto: 21/08/2007
|
cmq come ultima prova, lasciando il timer disattivato quindi mantenendo un'icona prova a creare un form2 in cui inserisci un menu e poi usi il codice
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim Msg As Long
Msg = X / Screen.TwipsPerPixelX
If Msg = WM_LDBCLICK Then 'click tasto sinistro
form1.popupmenu form2.NomeMenu 'devi creare un form2 con il menu
End If
End Sub
se manco questo non ti funziona ti faccio un esempio che a me funziona e te lo allego al prossimo topic.
|
|
fusebyte (Normal User)
Expert
Messaggi: 332
Iscritto: 24/12/2008
|
Neanche cosi'.
ho creato il form4 (il Form2 è gia impegnato)
Ho creato un menu popup
ho sostituito il FORM1 con il FORM 4
Public Sub AddToTray(Form4 As Form, ToolTip As String, Icon)
ho impostato il Timer.Enable =False
Ora ho un'icona fissa
Premo MINBUTTON si riduce ad icona
Clicco DX per vedere il menu popup..niente
Clicco SX per riaprire il soft...niente
C'è da diventare matti.
|
|
GrG (Member)
Guru^2
Messaggi: 3430
Iscritto: 21/08/2007
|
ho realizzato un piccolo esempio funzionante (almeno per me) vedi tu, se non ti funziona non saprei proprio che dirti
|
|
fusebyte (Normal User)
Expert
Messaggi: 332
Iscritto: 24/12/2008
|
Funziona tramite menu popup con click DX e scegli "mostra" per riaprire il soft.
Prova a fare click o doppio click sulla ICON TRAY.non si apre.
Quello è il mio problema.
A prescindere che potrei risolvere col menu popup,come si fa a far funzionare il doppio clickper riaprire il soft?
Saputo questo,ho esaurito le richieste :-)))
Pero' cercherei questo in una semplice funzione senza legarsi a Form o altro.
Ti posto un esempio funzionante senza FORM e che funziona col doppio click.
Non riesco pero' ad adattarlo al mio codice(l'ultimo code che ho postato),perche' questo si basa su un "controllo utente" e le icone sono messe "fuori Form",mentre io le ho "dentro il Form".
Se riuscissi ad estrarre la parte del double click adattato al mio codice ,abbiamo risolto.
Naturalmente continuo a provare pure io.
Ciao
Ultima modifica effettuata da fusebyte il 11/09/2009 alle 19:53 |
|