Gestione e destinazioni comando
L'interfaccia dispatch IOleCommandTarget di comando definisce un semplice meccanismo estendibile e l'esecuzione di query ed eseguire comandi.Questo meccanismo è più semplice per IDispatch automazione poiché si basa interamente su un insieme standard dei controlli; i controlli dispongono raramente argomenti e non sono disponibili informazioni sul tipo procedure (indipendenza dai tipi è ridotta per gli argomenti passati dalla riga di comando anche).
Nella progettazione di interfacce dispatch di comando, ogni comando “appartiene a un gruppo di controlli„ che viene identificato con GUID.Di conseguenza, chiunque può definire un nuovo gruppo e definire tutti i controlli contenuti in tale gruppo senza alcuna necessità di coordinare con Microsoft o qualsiasi altro fornitore.(Si tratta essenzialmente nello stesso modo della definizione come dispinterface più dispIDs di automazione.C'è sovrapposizione di seguito, sebbene questo meccanismo di routing dei comandi sia solo per il routing dei comandi e non per lo script/programmabilità su vasta scala come handle di automazione.)
IOleCommandTarget gestisce gli scenari seguenti:
Quando un oggetto viene attivato sul posto, solo le barre degli strumenti dell'oggetto in genere visualizzato e le barre degli strumenti dell'oggetto possono disporre di pulsanti per alcuni controlli contenitore come Stampa, StampaAnteprima, Salva, New, Zoome altri.(Gli standard in grado di attivazione consigliabile che gli oggetti rimuovono tali pulsanti dalle barre degli strumenti, o almeno le disabilitano.La progettazione consente ai controlli essere attivata ma corretto al gestore corretto.) Attualmente, non esiste alcun meccanismo per l'oggetto invia questi controlli al contenitore.
Quando un documento attivo viene incorporato in un contenitore di documenti attivi (come il Raccoglitore Office), il contenitore può avere l'esigenza di inviare comandi tale Stampa, PageInstallazione, Proprietàe altri al documento attivo contenuto.
Il routing dei comandi semplice potrebbe essere gestito con gli standard esistenti e IDispatchdi automazione.Tuttavia, il sovraccarico coinvolto con IDispatch è più in questo caso, in modo da IOleCommandTarget fornisce un mezzo più semplice per ottenere gli stessi scopi:
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);
}
Il metodo di QueryStatus di verifica se un set di controlli, il set di particolare identificato con GUID, è supportato.Questa chiamata si riempie una matrice di valori di OLECMD (strutture) di elenco supportato i controlli nonché restituisce il testo che descrive il nome di un comando e/o delle informazioni sullo stato.Quando il chiamante desidera richiamare un comando, può passare il comando (e GUIDstabilito) a Exec con le opzioni e gli argomenti, dopo aver ottenuto indietro un valore restituito.