How to Utilisation de la barre d'état système à partir de Visual Basic directement

Traductions disponibles Traductions disponibles
Numéro d'article: 176085 - Voir les produits auxquels s'applique cet article
Ancien nº de publication de cet article : F176085
Agrandir tout | Réduire tout

Sommaire

Résumé

Cet article démontre comment exploiter au maximum la barre d'état système Windows à l'aide de Visual Basic. Ce programme permet de placer une icône de votre choix dans la barre d'état système qui affichera une Info-bulles de votre choix quand la souris se pose dessus, restaure l'application quand vous cliquez dessus et affiche un menu déroulant si vous cliquez dessus avec le bouton droit. Tout cela est possible grâce à la capacité de Visual Basic de traiter directement les rappels, donc à optimiser l'utilisation de la fonction Shell_NotifyIcon qui est exportée par le fichier Shell32.dll.

Plus d'informations

Il est possible d'ajouter l'exemple suivant à n'importe quel projet Visual Basic doté d'une forme et d'un module standard au minimum.

Exemple pas à pas :

  1. Ajoutez le code suivant à la section des déclarations d'un module standard dans votre projet :
       'type défini par l'utilisateur requis par Shell_NotifyIcon API call
       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
    
       'constantes requises par l'appel API Shell_NotifyIcon :
       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     'Button down
       Public Const WM_LBUTTONUP = &H202       'Button up
       Public Const WM_LBUTTONDBLCLK = &H203   'Double-click
       Public Const WM_RBUTTONDOWN = &H204     'Button down
       Public Const WM_RBUTTONUP = &H205       'Button up
       Public Const WM_RBUTTONDBLCLK = &H206   'Double-click
    
       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
  2. Ajoutez le code suivant à n'importe quelle forme de votre projet que vous souhaitez attribuer à l'icône de la barre d'état système de votre application :
       Private Sub Form_Load()
       'la forme doit être entièrement visible avant d'appeler Shell_NotifyIcon
       Me.Show
       Me.Refresh
       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 = "Your ToolTip" & vbNullChar
       End With
       Shell_NotifyIcon NIM_ADD, nid
       End Sub
    
       Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As
       _
          Single, Y As Single)
       'cette procédure reçoit les rappels de l'icône de barre d'état système.
       Dim Result As Long
       Dim msg As Long
        'the value of X will vary depending upon the scalemode setting
        If Me.ScaleMode = vbPixels Then
         msg = X
        Else
         msg = X / Screen.TwipsPerPixelX
        End If
        Select Case msg
         Case WM_LBUTTONUP                  '514 restore form window
          Me.WindowState = vbNormal
          Result = SetForegroundWindow(Me.hwnd)
          Me.Show Case WM_LBUTTONDBLCLK     '515 restore form window
          Me.WindowState = vbNormal
          Result = SetForegroundWindow(Me.hwnd)
          Me.Show
         Case WM_RBUTTONUP                  '517 display popup menu
          Result = SetForegroundWindow(Me.hwnd)
          Me.PopupMenu Me.mPopupSys
        End Select
       End Sub
    
       Private Sub Form_Resize()
        'Nécessaire pour assurer que la fenêtre réduite soit masquée
        If Me.WindowState = vbMinimized Then Me.Hide
       End Sub
    
       Private Sub Form_Unload(Cancel As Integer)
        'cela supprime l'icône de la barre d'état système
        Shell_NotifyIcon NIM_DELETE, nid
       End Sub
    
       Private Sub mPopExit_Click()
        'appelée quand l'utilisateur clique sur le menu contextuel Exit command
        Unload Me
       End Sub
    
       Private Sub mPopRestore_Click()
        'appelée quand l'utilisateur clique sur le menu contextuel Restore command
        Me.WindowState = vbNormal
        Result = SetForegroundWindow(Me.hwnd)
        Me.Show
        End Sub
  3. Donnez les paramètres de propriétés suivants à la forme à laquelle vous avez ajouté le code ci-dessus :
     Propriété    Exemple de paramètres requis pour la barre d'état système
     ------------------------------------------------------------------------------
     Icon       = L'icône que vous souhaitez afficher dans la barre d'état système.
     Minbutton  = True 
     ShownInTaskbar = False
  4. Ajoutez les options de Menu suivantes à la même forme à l'aide du Créateur de menus :
     Caption          Name         Enabled   Visible   Position
     ---------------------------------------------------------
     &SysTray         mPopupSys    True      False     Main Level
     &Restore         mPopRestore  True      True      Inset one
     &Exit            mPopExit     True      True      Inset one
Vous pouvez ajouter des options de menu supplémentaires si nécessaire.

Souplesse de barre d'état système

Vous pouvez modifier l'Info-bulles qui s'affiche sur l'icône de la barre d'état système en modifiant la ligne suivante dans la procédure Form_Load :
 .szTip = "Your ToolTip" & vbNullChar
Remplacez "Your ToolTip" par le texte que vous souhaitez afficher.

Vous pouvez modifier l'Icône qui s'affiche dans la barre d'état système en modifiant la ligne suivante dans la procédure Form_Load :
 .hIcon = Me.Icon
Remplacez Me.Icon par n'importe quelle Icône de votre projet.

Après utilisation de la constante NIM_ADD, vous pouvez modifier n'importe quel paramètre de barre d'état système à tout moment, en réassignant les valeurs dans la variable nid puis en utilisant la variation suivante de l'appel API Shell_NotifyIcon :
 Shell_NotifyIcon NIM_MODIFY, nid.
Cependant, si vous souhaitez recevoir le rappel d'une autre façon, vous devrez supprimer l'icône courante en utilisant d'abord "Shell_NotifyIcon NIM_Delete, nid" car la fonction NIM_Modify n'acceptera pas une nouvelle forme Hwnd, ou vous devrez ajouter une autre Icône à la barre d'état système pour la nouvelle forme à l'aide de "Shell_NotifyIcon NIM_ADD, nid", après avoir rempli le type nid avec les nouvelles formes Hwnd. Vous pouvez également déclarer des copies distinctes du type nid pour chaque forme pour laquelle vous souhaitez afficher une icône dans la barre d'état système Windows, puis les modifier dans chaque événement d'activation des formes à l'aide de la séquence NIM_DELETE et NIM_ADD.

Références

Pour plus d'informations sur l'utilisation de la barre d'état système à partir de Visual Basic 4.0 ou d'une version précédente, consultez l'article suivant dans la Base de connaissances Microsoft :
149276 How to Utiliser les Icônes avec la barre d'état système Windows 95

Propriétés

Numéro d'article: 176085 - Dernière mise à jour: vendredi 20 janvier 2006 - Version: 4.0
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Visual Basic 6.0 Édition initiation
  • Microsoft Visual Basic 5.0 Édition professionnelle
Mots-clés : 
kbgrpvbdb kbhowto kbvbp500 kbvbp600bug KB176085
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.
Exclusion de responsabilité concernant les contenus obsolètes dans la Base de connaissances
Cet article concerne des produits pour lesquels Microsoft n'offre plus de support. Il est par conséquent fourni « en l'état » et ne sera plus mis à jour.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com