Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 26
  1. #1
    Utente di HTML.it L'avatar di StegcO
    Registrato dal
    Aug 2008
    Messaggi
    371

    [VB6] Minimizzare in SysTray una MDI Form

    Ciao,

    utilizzo questo codice ( How to use the System Tray directly from Visual Basic ) per minimizzare i miei programmi nella SysTray, ora però ho fatto un progetto con MDI + FormFiglie e questo codice non funziona, grazie all'aiuto di TheTruster ho fatto delle modifiche, ma ancora non funziona come dovrebbe, ecco la situazione:

    FUNZIONA

    * Icona visualizzata in SysTray

    NON FUNZIONA

    * visualizzazione Menu al click col destro in SysTray
    * ... di conseguenza imposibile testare il resize/altro ...

    CODICE

    codice:
    Private Sub MDIForm_Load()
    
    '##### Gestisco NotifyIcon in SysTray #####
    
    With nid
        .cbSize = Len(nid)
        .hwnd = Me.hwnd
        .uId = vbNull
        .uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
        .uCallBackMessage = WM_MOUSEMOVE
        .hIcon = Me.Icon
        .szTip = "TooTip" & vbNullChar
    End With
           
    Shell_NotifyIcon NIM_ADD, nid
    
    End Sub
    codice:
    Private Sub MDIForm_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    
    If UnloadMode = vbFormControlMenu Then
        'Dim risp As Integer
        'risp = MsgBox("Il programma è stato minimizzato sulla SystemTray", vbExclamation)
        Me.Hide
        Cancel = True
    End If
    
    End Sub
    codice:
    Private Sub MDIForm_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    
    Dim Result As Long
    Dim msg As Long
    
    msg = X / Screen.TwipsPerPixelX
    
    Select Case msg
    '    Case WM_LBUTTONUP
    '         Me.WindowState = vbNormal
    '         Result = SetForegroundWindow(Me.hwnd)
    '         Me.Show
        Case WM_LBUTTONDBLCLK
             Me.WindowState = vbNormal
             Result = SetForegroundWindow(Me.hwnd)
             Me.Show
        Case WM_RBUTTONUP
             Result = SetForegroundWindow(Me.hwnd)
             Me.PopupMenu Me.mPopupSys
    End Select
    
    End Sub
    codice:
    Private Sub MDIForm_Resize()
    
    If Me.WindowState = vbMinimized Then Me.Hide
        
    End Sub
    codice:
    Private Sub mPopRestore_Click()
    
    Dim Result As Long
    
    Me.WindowState = vbNormal
    Result = SetForegroundWindow(Me.hwnd)
    Me.Show
    
    End Sub
    codice:
    Private Sub mPopExit_Click()
    
    Unload Me
           
    End Sub
    codice:
    Private Sub MDIForm_Unload(Cancel As Integer)
    
    Shell_NotifyIcon NIM_DELETE, nid
        
    End Sub

    codice:
    Option Explicit
    
    '##### modulo.bas --> Dichiaro il necessario per ridurre in SysTray #####
    
    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 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 Declare Function SetForegroundWindow Lib "user32" _
          (ByVal hwnd As Long) As Long
    Public Declare Function Shell_NotifyIcon Lib "shell32" _
          Alias "Shell_NotifyIconA" _
          (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean
    
    Public nid As NOTIFYICONDATA
    Qualcuno riesce a trovare l'errore?

  2. #2
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Ciao
    ho creato un nuovo progetto, ho copiato il tuo codice pari-pari e a me funziona tutto perfettamente.


    P.S. Io di solito non faccio visualizzare l'icona all'avvio, ma solo quando la finestra viene ridotta ad icona nella tray, poi la elimino quando mostro la finestra.
    De gustibus, naturalmente.

  3. #3
    Utente di HTML.it L'avatar di StegcO
    Registrato dal
    Aug 2008
    Messaggi
    371
    ma come funziona

    cioè se tu clicchi col destro sull'icona nella systray ti apre il menu?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480

    Re: [VB6] Minimizzare in SysTray una MDI Form

    Originariamente inviato da StegcO
    grazie all'aiuto di TheTruster
    [OT]... che ti ha risposto in un altro forum ... non trovo bello questo "cambio" quando qualcuno ti stava aiutando ... personalmente non lo farei piu' ...[/OT]
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it L'avatar di StegcO
    Registrato dal
    Aug 2008
    Messaggi
    371
    Suvvia ragazzi, non prendiamocela per così poco, TheTruster mi ha aiutato ed è stato ringraziato "sia di qua che di la" e spero che non si sia offeso se, dopo non aver ricevuto risposta nell'altro forum (non è una critica, ci mancherebbe) ed avendo ancora un problema da risolvere ho optato per chiedere ad altri utenti.

    Non mi sembra di aver fatto nulla di male, se qualcuno se l'è presa mi dispiace.

  6. #6
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Originariamente inviato da StegcO
    ma come funziona

    cioè se tu clicchi col destro sull'icona nella systray ti apre il menu?


    Yes! Non fa una piega.

    - Windows XP SP3
    - Visual Basic 6.0 SP6

  7. #7
    Utente di HTML.it L'avatar di StegcO
    Registrato dal
    Aug 2008
    Messaggi
    371
    Piacere mi presento, sono lo sfigato degli oggetti di VB6

    In pratica avevo un progetto che dovevo minimizzare in systray ma era una form normale, in pratica non funzionava (come ora) perchè c'era una Label3 che non lo faceva funzionare.

    Ora ho scoperto che in questo progetto il problema è la toolbar_menu (XPToolbar), se la tolgo funziona.

    Ho provato a fare così ma non funziona lo stesso:

    codice:
    Private Sub MDIForm_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        
    MouseMove Button, Shift, X, Y
        
    End Sub
    codice:
    Private Sub tlb_menu_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        
    MouseMove Button, Shift, X, Y
        
    End Sub
    codice:
    Private Sub MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    
    Dim Result As Long
    Dim msg As Long
    
    msg = X / Screen.TwipsPerPixelX
    
    Select Case msg
    '    Case WM_LBUTTONUP
    '         Me.WindowState = vbNormal
    '         Result = SetForegroundWindow(Me.hwnd)
    '         Me.Show
        Case WM_LBUTTONDBLCLK
             Me.WindowState = vbNormal
             Result = SetForegroundWindow(Me.hwnd)
             Me.Show
        Case WM_RBUTTONUP
             Result = SetForegroundWindow(Me.hwnd)
             Me.PopupMenu Me.mPopupSys
    End Select
    
    End Sub

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da StegcO
    Suvvia ragazzi, non prendiamocela per così poco, TheTruster mi ha aiutato ed è stato ringraziato "sia di qua che di la" e spero che non si sia offeso se, dopo non aver ricevuto risposta nell'altro forum (non è una critica, ci mancherebbe) ed avendo ancora un problema da risolvere ho optato per chiedere ad altri utenti.
    [OT]"Per così poco" dal tuo punto di vista ... non hai ricevuto risposta "immediata" perche' cosi' funziona sui forum ... non si e' "a disposizione" di chi fa domande" ... Quando non ne avrai qui per un paio d'ore, passerai al prossimo forum ? Comunque ... auguri [/OT]
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it L'avatar di StegcO
    Registrato dal
    Aug 2008
    Messaggi
    371
    Ella miseria oregon ma ho fatto una cosa così grave? Lo sò bene come funzionano i forum, infatti non ho mica detto che TheTruster è un idiota che non mi ha risposto subito, anzi, l'ho ringraziato su entrambi i forum per tutto l'aiuto ricevuto. Nessuno è a disposizione di nessuno, ci sono utenti meno esperti che, solitamente, chiedono aiuto ed altri utenti, più esperti, che di loro volontà danno una mano. TheTruster è sicuramente più esperto di me e mi ha dato una grande mano per avvicinarmi alla soluzione del problema.

    E tu, oregon, che apporto ai dato a questo thread? Sei arrivato a dire che sono stato maleducato a porre la domanda in più di un forum, e che problema c'è? Che male ho fatto? Ho cercato più di una strada per risovlere il problema.

    La domanda, OT di oregon a parte, è sempre aperta, ci stò morendo dietro

    Spero che nessuno si sia sentito offeso.

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da StegcO
    Lo sò bene come funzionano i forum
    No ... non lo sai.

    E tu, oregon, che apporto ai dato a questo thread?
    Magari non a questo ... ma a tanti tuoi altri, sì ...

    Sei arrivato a dire che sono stato maleducato a porre la domanda in più di un forum
    Mai detto ...

    Ora ho scoperto che in questo progetto il problema è la toolbar_menu (XPToolbar)
    La XPToolbar e' di TheTruster ... probabilmente dovresti chiedere a lui ... no ?

    EDIT: ( Come hai regolarmente fatto ... )
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.