Comment faire pour associer un graphique à un élément

Traductions disponibles Traductions disponibles
Numéro d'article: 298144 - Voir les produits auxquels s'applique cet article
Cet article a été archivé. Il est proposé « en l'état » et ne sera plus mis à jour.
Agrandir tout | Réduire tout

Sommaire

Résumé

Cet article explique comment faire pour associer un graphique à un élément de menu.

Plus d'informations

Dans Visual Basic, les éléments de menu avez déjà deux graphiques associés : une image désactivée, ce qui est l'image par défaut et aucune coche, et une image vérifiée, que vous pouvez définir dans l'éditeur menu en activant la case à cocher activé de l'élément de menu. Pour ajouter votre propre image et l'associer à un élément de menu, vous pouvez modifier les images d'origine via un appel à la fonction SetMenuItemBitmaps .

Toutefois, avant d'appeler cette fonction, vous devez obtenir le descripteur du sous-menu. Cette opération nécessite que vous appelez la fonction GetMenu , qui renvoie un descripteur dans le menu principal, puis la fonction GetSubMenu , qui renvoie un descripteur sur le sous-menu.

Après avoir obtenu un handle vers le sous-menu, pour spécifier la position de l'élément de menu à modifier, vous devez transmettre cette poignée à SetMenuItemBitmaps pour associer l'image bitmap à celui-ci menu est désactivée. Vous pouvez utiliser la constante MF_BYPOSITION pour spécifier que position la position de base zéro, relatif de l'élément de menu.

L'exemple suivant utilise également la fonction LoadImage pour charger une image bitmap en mémoire et retourner un handle. Vous pouvez également utiliser un contrôle PictureBox masqué comme suit :
Set Picture1.Picture = LoadPicture(App.Path & "\MenuImg.bmp")
hMenuImg = Picture1.Picture.Handle
				

Exemple step-By-Step

  1. Ouvrez un nouveau projet EXE standard dans Visual Basic. Form1 est créé par défaut.
  2. Placez un contrôle bouton de commande , Command1, sur Form1.
  3. Dans le menu Outils , cliquez sur l'éditeur de menu et ajoutez trois éléments de menu à l'écran comme suit :
    1. Pour le premier élément, tapez menu dans la zone de texte Légende , tapez mnuMenu dans la zone de texte Nom et vérifiez que la case à cocher visible est activée.
    2. Pour le deuxième article, cliquez sur suivant , tapez SubOne dans la zone de texte Légende , tapez mnuOne dans la zone de texte Nom et cliquez sur la flèche droite pour abaisser le niveau d'un article pour qu'elle apparaisse en tant que sous-menu du premier élément.
    3. Pour le troisième article, sur suivant , tapez SubTwo dans la zone de texte Légende , type mnuTwo dans la zone de texte Nom , et laissez il indentés d'un niveau afin qu'il soit également s'affiche un sous-menu du premier élément. Cliquez sur OK . Notez que le formulaire est maintenant une barre de menus.
  4. Dans le menu Fichier , cliquez sur Enregistrer sous pour enregistrer le formulaire et un projet à un emplacement de votre choix.
  5. Ouvrez Microsoft Paint ou votre application graphique favoris et créez l'image bitmap que vous souhaitez utiliser comme votre menu graphique. L'image bitmap doit être un carré 10 en 10 pixels pour pouvoir s'afficher correctement. Pour définir la taille dans Microsoft Paint, cliquez sur attributs dans le menu Image . Il est également recommandé d'utiliser les bitmaps monochromes pour obtenir de meilleurs résultats.
  6. Enregistrer l'image en tant que MenuImg.bmp dans votre répertoire de projet.
  7. Retourner à Visual Basic et ajouter le code suivant à la fenêtre de code de Form1 :
    Option Explicit
    
    Private Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long
    
    Private Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, _
       ByVal nPos As Long) As Long
    
    Private Declare Function SetMenuItemBitmaps Lib "user32" _
       (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long, _
        ByVal hBitmapUnchecked As Long, ByVal hBitmapChecked As Long) As Long
    
    Private Declare Function LoadImage Lib "user32" Alias "LoadImageA" _
       (ByVal hInst As Long, ByVal lpsz As String, ByVal un1 As Long, _
       ByVal n1 As Long, ByVal n2 As Long, ByVal un2 As Long) As Long
    
    ' Constant for SetMenuItemBitmaps
    Private Const MF_BYPOSITION = &H400&
    
    ' Constants for LoadImage
    Private Const IMAGE_BITMAP = &O0
    Private Const LR_LOADFROMFILE = 16
    Private Const LR_CREATEDIBSECTION = 8192
    
    Private Sub Command1_Click()
       Dim hMenu As Long
       Dim hSubMenu As Long
       Dim hMenuImg As Long
       Dim sFileName As String
    
    ' Get the bitmap.
       sFileName = App.Path & "\MenuImg.bmp"
       hMenuImg = LoadImage(0, sFileName, IMAGE_BITMAP, 0, 0, _
                  LR_LOADFROMFILE Or LR_CREATEDIBSECTION)
    ' Get the menu item handle.
        hMenu = GetMenu(Me.hwnd)
        hSubMenu = GetSubMenu(hMenu, 0)
    ' Set the "mnuTwo" bitmap to the one that is loaded in memory.
        Call SetMenuItemBitmaps(hSubMenu, 1, MF_BYPOSITION, hMenuImg, 0)
    End Sub
    					
  8. Exécutez le projet. Cliquez sur Command1 , puis sélectionnez le menu. L'image que vous avez créée apparaît en regard de la deuxième élément de menu, SubTwo .

Références

Pour plus d'informations sur comment faire pour associer un graphique à un élément de menu dans Visual Basic 16 bits, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
71281 Comment faire pour implémentation d'une image dans un menu de Visual Basic

Propriétés

Numéro d'article: 298144 - Dernière mise à jour: lundi 24 février 2014 - Version: 1.1
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Visual Basic 5.0 Édition Entreprise
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
  • Microsoft Visual Basic 5.0 Édition professionnelle
  • Microsoft Visual Basic 6.0 Édition professionnelle
  • Microsoft Windows XP Édition familiale
  • Microsoft Windows XP Professional
Mots-clés : 
kbnosurvey kbarchive kbmt kbapi kbbitmap kbgdi kbhowto kbmenu kbuidesign KB298144 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 298144
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.

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