Compartilhar via


Manipulação de mensagem e destinos de comando

A interface de despacho do comando IOleCommandTarget define um mecanismo simple e extensível para consultar e executar comandos.Esse mecanismo é mais simples do que a do automação IDispatch porque depende totalmente um conjunto padrão de comandos; comandos raramente têm argumentos e nenhuma informação de tipo está envolvida (tipo de segurança diminuída para argumentos de comando também).

No design de interface de expedição de comando, cada comando pertence a um "grupo de comando" que propriamente dita é identificado com um GUID.Portanto, qualquer pessoa pode definir um novo grupo e definir todos os comandos de grupo sem qualquer necessidade de coordenar com a Microsoft ou qualquer outro fornecedor.(Isso é essencialmente o mesmo meio de definição como um dispinterface plus dispIDs na automação.Há sobreposição aqui, embora esse comando mecanismo de roteamento é somente para roteamento de comando e não para script/programação em grande escala como alças de automação).

IOleCommandTargetmanipula os cenários a seguir:

  • Quando um objeto é ativado, somente as barras de ferramentas do objeto são exibidas normalmente e barras de ferramentas do objeto podem ter botões para alguns comandos como o recipiente em lugar Print, Printvisualização, Salvar, New, Zoome outros.(Ativação in-loco padrões recomendam que objetos remover esses botões de suas barras de ferramentas ou em menos desabilitá-los.Esse design permite esses comandos para ser habilitado e ainda roteado para o manipulador de direito). Atualmente, não há nenhum mecanismo para o objeto enviar esses comandos para o recipiente.

  • Quando um documento ativo é incorporado em um contêiner do documento ativo (como o Office Binder), o recipiente precisa enviar comandos como Print, páginainstalação, Propriedadese outros para o documento ativo.

Esse roteamento de comando simples poderia ser tratada por meio de padrões de automação existentes e IDispatch.No entanto, a sobrecarga envolvida com IDispatch é mais do que é necessário aqui, portanto, IOleCommandTarget fornece um meio simples para atingir o mesmo termina:

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

}

O QueryStatus método aqui testa se um determinado conjunto de comandos, o conjunto sendo identificados com um GUID, é suportado.Essa chamada preenche uma matriz de OLECMD valores (estruturas) com a lista de comandos, bem como retornar o texto que descreve o nome de um comando e/ou status informações com suporte.Quando o chamador deseja invocar um comando, ele pode passar o comando (e o conjunto de GUID) para Exec com opções e argumentos, obter de volta um valor de retorno.

Consulte também

Conceitos

Recipientes de documento ativa