Manipulação de mensagem e destinos de comando

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

No design de interface dispatch de comando, cada comando pertence a um "agrupar de comando" que propriamente dita é identificado com umGUID.Portanto, qualquer pessoa pode definir um novo agrupar e definir todos os comandos dentro desse agrupar sem nenhuma necessidade de coordenar com a Microsoft ou qualquer Outros fornecedor.(Isso é essencialmente o mesmo meio de definição de sistema autônomo um Dispinterface plus dispIDs na automação.Há sobreposição aqui, embora esse comando mecanismo de roteamento seja somente para roteamento de comando e não para script/programação em grande escala sistema autônomo automação alças.)

IOleCommandTarget lida com os seguintes cenários:

  • When an object is in-place activated, only the object's toolbars are typically displayed and the object's toolbars may have buttons for some of the container commands like Print, Print Preview, Save, New, Zoom, and others.(Ativação in-loco padrões recomendam que objetos remover esses botões de suas barras de ferramentas ou em menos desativá-los.Este projeto permite que esses comandos para habilitado e ainda roteado para o manipulador de à direita.) Atualmente, não há nenhum mecanismo para o objeto enviar esses comandos para o contêiner.

  • When an active document is embedded in an active document container (such as Office Binder), the container may need to send commands such Print, Page Setup, Properties, and others to the contained active document.

Esse comando simples roteamento pôde ser tratada por meio de padrões existentes de automação e IDispatch. No entanto, a sobrecarga envolvidas IDispatch é mais do que é necessário aqui, para que IOleCommandTarget Fornece um meio mais simples para alcançar as extremidades mesmas:

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

}

The QueryStatus método aqui testa se um determinado conjunto de comandos, o conjunto que está sendo identificada com um GUID, há suporte.Essa telefonar preenche uma matriz de OLECMD valores (estruturas) com a lista de comandos suportada sistema autônomo bem sistema autônomo retornar o texto que descreve o nome de um comando e/ou status de informações.Quando o chamador deseja invocar um comando, ele pode passar o comando (e o conjunto de GUID) to EXEC juntamente com opções e argumentos, obter de volta um valor retornado.

Consulte também

Conceitos

Contêineres de documento ativo