Partager via


Gestion des messages et cible de la commande

l'interface de dispatch IOleCommandTarget de commande définit un mécanisme simple et extensible pour interroger et exécuter des commandes.Ce mécanisme est plus simple que IDispatch de l'automation car il repose entièrement sur un ensemble de commandes standard ; les commandes ont rarement des arguments, et aucune information de type n'est sous-entendue (la sécurité de type est également réduite pour les arguments de commande).

Dans la conception de l'interface de dispatch de commande, chaque commande appartient à un « groupe de commandes » qui lui-même est identifié avec GUID.Par conséquent, n'importe qui peut définir un nouveau groupe et définir toutes les commandes dans ce groupe sans aucun besoin de coordonner avec Microsoft ou tout autre fournisseur.(Il s'agit essentiellement le même moyen de la définition que dispinterface plus dispIDs dans l'automation.Il existe de chevauchement ici, bien que ce mécanisme de routage des commandes est uniquement pour le routage des commandes et non pour le script/programmabilité à grande échelle comme handles d'automation.)

IOleCommandTarget gère les scénarios suivants :

  • Lorsqu'un objet est activé sur place, seuls les barres d'outils de l'objet sont généralement affichées et les barres d'outils de l'objet peuvent avoir des boutons pour certaines commandes de conteneur comme Imprimer, ImprimerAperçu, Enregistrer, New, Zoom, et.(Les normes d'activation sur place recommandent que les objets suppression de ces boutons de leurs barres d'outils, ou au moins les désactiver.Cette conception permet ces commandes d'être activé mais routé au gestionnaire approprié.) Actuellement, il n'existe aucun mécanisme pour que l'objet comporte ces commandes au conteneur.

  • Lorsqu'un document actif est incorporé dans un conteneur de documents actifs (tel que le classeur Office), le conteneur peut devoir envoyer des commandes un tel Imprimer, PageInstallation, Propriétés, et d'autres au document actif contenu.

Ce routage des commandes simple pourrait être gérée via les normes existants et l' IDispatchautomation.Toutefois, la surcharge impliquée avec IDispatch est plus qui est requis ici, ce IOleCommandTarget fournit un moyen plus simple d'atteindre les mêmes opérations :

interface IOleCommandTarget : IUnknown

{

HRESULT QueryStatus(

[in] GUID *pguidCmdGroup,

[in] ULONG cCmds,

[in,out][size_is(cCmds)] OLECMD *prgCmds,

[in,out] OLECMDTEXT *pCmdText);

HRESULT Exec(

[in] GUID *pguidCmdGroup,

[in] DWORD nCmdID,

[in] DWORD nCmdExecOpt,

[in] VARIANTARG *pvaIn,

[in,out] VARIANTARG *pvaOut);

}

La méthode d' QueryStatus ici teste si un ensemble particulier de commandes, l'ensemble identifiée avec GUID, est pris en charge.Cet appel remplit tableau de valeurs d' OLECMD (structures) avec la liste de commandes prise en charge ainsi que retourne le texte décrivant le nom d'une commande et/ou des informations d'état.Lorsque l'appelant veut appeler une commande, il peut passer la commande (et le GUIDdéfini) à Exec avec des options et des arguments, l'obtention de retourner une valeur de retour.

Voir aussi

Concepts

Conteneur de documents actifs