Delen via


Berichtafhandeling en opdrachtdoelen

De interface voor het dispatchen van opdrachten IOleCommandTarget definieert een eenvoudig en uitbreidbaar mechanisme om opdrachten op te vragen en uit te voeren. Dit mechanisme is eenvoudiger dan automation IDispatch omdat het volledig afhankelijk is van een standaardset opdrachten; opdrachten hebben zelden argumenten en er is geen typegegevens betrokken (typeveiligheid wordt ook verminderd voor opdrachtargumenten).

In het ontwerp van de opdracht-dispatchinterface behoort elke opdracht tot een 'opdrachtgroep' die zelf wordt geïdentificeerd met een GUID. Daarom kan iedereen een nieuwe groep definiëren en alle opdrachten binnen die groep definiëren zonder dat u hoeft te coördineren met Microsoft of een andere leverancier. (Dit is in wezen hetzelfde definitiemiddel als een dispinterface plus dispID's in Automation. Er is hier sprake van overlapping, hoewel dit mechanisme voor opdrachtroutering alleen is bedoeld voor opdrachtroutering en niet voor scripting/programmeerbaarheid op grote schaal als Automation-ingangen.)

IOleCommandTarget verwerkt de volgende scenario's:

  • Wanneer een object in-place is geactiveerd, worden alleen de werkbalken van het object weergegeven en kunnen de werkbalken van het object knoppen bevatten voor sommige van de containeropdrachten, zoals Afdrukken, Afdrukvoorbeeld, Opslaan, Nieuw, Zoomen en andere. (In-place activeringsstandaarden raden aan dat objecten dergelijke knoppen uit hun werkbalken verwijderen of ten minste uitschakelen. Met dit ontwerp kunnen deze opdrachten worden ingeschakeld en toch naar de juiste handler worden gerouteerd.) Op dit moment is er geen mechanisme voor het object om deze opdrachten naar de container te verzenden.

  • Wanneer een actief document is ingesloten in een actieve documentcontainer (zoals Office Binder), moet de container mogelijk opdrachten verzenden zoals Afdrukken, Pagina-instelling, Eigenschappen en andere naar het ingesloten actieve document.

Deze eenvoudige opdrachtroutering kan worden verwerkt via bestaande Automation-standaarden en IDispatch. De overhead in verband met IDispatch is echter groter dan nodig is, dus IOleCommandTarget biedt een eenvoudigere manier om hetzelfde doel te bereiken.

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);
    }

De QueryStatus methode hier test of een bepaalde set opdrachten, de set die wordt geïdentificeerd met een GUID, wordt ondersteund. Deze aanroep vult een matrix van OLECMD-waarden (structuren) met de ondersteunde lijst met opdrachten en retourneert tekst die de naam van een opdracht en/of statusinformatie beschrijft. Wanneer de aanroeper een opdracht wil aanroepen, kan deze de opdracht (en de set-GUID) samen met opties en argumenten aan Exec doorgeven om een retourwaarde terug te krijgen.

Zie ook

Actieve documentcontainers