Comment faire pour définir le masque et les propriétés de l'image d'Office XP CommandBars

Traductions disponibles Traductions disponibles
Numéro d'article: 286460 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Sommaire

Résumé

Microsoft Office XP introduit deux nouvelles propriétés à l'objet CommandBarButton : les propriétés de masque et une image . Vous pouvez utiliser ces propriétés pour placer d'images sur les contrôles barre de commande générée personnalisée.

note Ces propriétés sont également disponibles dans Microsoft Office 2003.

Plus d'informations

Les propriétés de masque et Image sont définies en tant que type IPictureDisp , qui est un membre de la bibliothèque stdole. IPictureDisp utilise les méthodes qui ne peut pas être marshalés frontières de processus. Par conséquent, les propriétés de masque et une image ne peuvent être appelées in-process (les macros VBA, Automatisation compléments et DLL ActiveX s'exécuter dans processus). Reportez-vous à la section « Références » pour plus d'informations concernant ce problème.

L'exemple ci-dessous montre comment créer une macro complémentaire d'automation qui ajoute un bouton CommandBar avec une image masqué.

Étapes pour créer des images pour l'image et le masque

  1. Démarrez Microsoft Paint. Dans le menu Image , cliquez sur attributs . Modifiez la taille de l'image à 32x32 et cliquez sur OK .
  2. Dessiner un visage jaune sur la surface de dessin. Remplir la zone qui entoure le cercle avec bleu.

    Réduire cette imageAgrandir cette image
    Picture of sample Picture.bmp. Steps
				to re-create this image are given in this article.
  3. Enregistrez l'image en tant que Circle.bmp.
  4. Pour créer le masque, remplir le cercle noir et remplir la zone en dehors du cercle blanc. Lorsque l'image avec le masque est ajoutée au contrôle CommandBar, les zones noires du masque sont visibles, tandis que les zones blanches sont transparentes.

    Réduire cette imageAgrandir cette image
    Picture of sample Mask.bmp. Steps to
				re-create this image are given in this article.
  5. Enregistrez l'image en tant que Mask.bmp.

Étapes pour créer le complément COM


  1. Démarrez Visual Basic et créez un nouveau complément projet.
  2. Dans le menu projet , cliquez sur Références . Si un « Microsoft Office » type de bibliothèque antérieures à la version que XP est sélectionnée, désactivez cette bibliothèque de type et sélectionnez la bibliothèque de type pour Microsoft Office XP. Cliquez sur OK .
  3. Dans l'Explorateur de projets, cliquez avec le bouton droit sur frmAddin , puis cliquez sur Supprimer frmAddin .
  4. Dans l'Explorateur de projet, double-cliquez sur le concepteur de connexion . Pour l'application sélectionnez Microsoft Excel et de comportement chargement initial , sélectionnez démarrage .
  5. Dans le menu Affichage , cliquez sur le code et remplacez le code pour la macro, dans la :
    Option Explicit
    
    Dim oExcel As Object
    Dim WithEvents oButton As Office.CommandBarButton
    
    Private Sub AddinInstance_OnConnection(ByVal Application As Object, _
     ByVal ConnectMode As AddInDesignerObjects.ext_ConnectMode, _
     ByVal AddInInst As Object, custom() As Variant)
    
      Dim oPic As stdole.IPictureDisp
      Dim oMask As stdole.IPictureDisp
    
      ' Load the picture and mask.
      Set oPic = LoadPicture(App.Path & "\circle.bmp")
      Set oMask = LoadPicture(App.Path & "\mask.bmp")
    
      ' Save an instance of our application.
      Set oExcel = Application
      ' Create a new button on the standard CommandBar.
      Set oButton = oExcel.CommandBars("Standard").Controls.Add(msoControlButton)
      With oButton
        ' Set a tag for the button.
        .Tag = "My Button"
        ' Set the event to fire when the button is pressed.
        .OnAction = "!<" & AddInInst.ProgId & ">"
        ' Set the picture property -- if you are using the Mask property, this
        ' property must be set before you set the Mask property.
        .Picture = oPic
        ' Set the Mask property.
        .Mask = oMask
        ' Show the button.
        .Visible = True
      End With
    End Sub
    
    Private Sub AddinInstance_OnDisconnection(ByVal RemoveMode As _
       AddInDesignerObjects.ext_DisconnectMode, custom() As Variant)
    
       ' Delete the button.
       oButton.Delete
       ' Release references.
       Set oButton = Nothing
       Set oExcel = Nothing
     End Sub
    
    Private Sub oButton_Click(ByVal Ctrl As Office.CommandBarButton, _
      CancelDefault As Boolean)
      ' Our button was pressed.
      MsgBox "The button was pressed!"
    End Sub
    					
  6. Enregistrez le projet et créer la macro complémentaire dans le dossier dans lequel les images sont stockés.
  7. Démarrez Excel. Un nouveau contrôle à un cercle jaune apparaît sur la CommandBar standard. Notez que la zone autour du cercle jaune est transparente.

Remarques supplémentaires

Comme précédemment définie, l'interface IPictureDisp ne peut pas être marshalé frontières de processus. Tente de définir le résultat des images et masque propriétés out-of-process dans l'erreur suivante :
Erreur d'exécution '-2147418113(8000ffff) » :
La méthode image de l'objet « _CommandBarButton » a échoué
Par conséquent, vous ne pouvez pas définir ces propriétés pour un objet CommandBarButton à partir de n'importe quel client Automation out-of-process ou d'un composant in-process qui s'exécute en mode débogage dans l'IDE de Visual Basic. Si vous exécutez l'exemple de macro complémentaire décrite dans cet article à partir de l'IDE de Visual Basic, vous recevrez cette erreur. Pour éviter cette erreur lors du débogage, vous pouvez commenter les lignes de définir les propriétés des images et masque ou utilisez compilation conditionnelle, tel qu'un #If... Then... #Else directive.

Références

Pour plus d'informations, cliquez sur les numéros ci-dessous pour afficher les articles correspondants dans la Base de connaissances Microsoft :
238228 Comment faire pour créer un Office 2000 complément COM dans Visual Basic
230689 SAMPLE : COMAddIn.exe Office 2000 complément COM écrit en Visual C++
150034 MODÈLE : LPPICTUREDISP ne peut pas être transmise dans des limites de processus
Pour plus d'informations, consultez le site de Web Microsoft suivant :
http://support.microsoft.com/ofd

Propriétés

Numéro d'article: 286460 - Dernière mise à jour: lundi 29 janvier 2007 - Version: 4.6
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
  • Microsoft Visual Basic 6.0 Édition professionnelle
  • Microsoft Office Access 2003
  • Microsoft Access 2002
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002
  • Microsoft Office Word 2003
  • Microsoft Word 2002 Standard Edition
  • Microsoft Office FrontPage 2003
  • Microsoft FrontPage 2002 Standard
  • Microsoft Office Outlook 2003
  • Microsoft Outlook 2002 Standard
  • Microsoft Office PowerPoint 2003
  • Microsoft PowerPoint 2002 Standard
Mots-clés : 
kbmt kbautomation kbhowto KB286460 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: 286460
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