Поделиться через


Обработка сообщений и цели команд

Интерфейс диспетчера IOleCommandTarget команды определяет простой и расширяемый механизм для запросов и выполняет команды. Этот механизм проще, чем IDispatch автоматизации, поскольку он использует полностью на стандартном наборе команд; команды редко присутствуют аргументы и никаких сведений о типе не включено (безопасность типов умалена для аргументов команды также).

При разработке интерфейса диспетчеризации команды, каждая команда принадлежит к группе «команды», которая сама определяется с помощью Идентификатор GUID. Поэтому каждый может определить новую группу и определить все команды в эту группу без каких-либо потребность в соответствии с Майкрософт или любым другим продавцем. (Это фактически одинаковые означает определения как dispinterface и dispIDs в автоматизации. Перекрытие здесь, этот механизм маршрутизации команд только для маршрутизации команд и не для скриптов и программирование в масштабах больших как дескрипторы автоматизации).

IOleCommandTarget обрабатывает следующие сценарии:

  • Когда объект на месте активирован, только инструменты объекта обычно отображаются и панели инструментов объекта могут использовать кнопки для некоторых команд контейнера, например Печать, Печать Просмотр, СохранитьNew, Масштаб и другие. (Стандарты встроенной активации объектов, рекомендуется удалить те из них, кнопок инструментов или хотя бы запретят их. Это позволяет включать эти команды, а также направленным к правильному обработчик). В настоящее время, не существует способа для объекта для подготовки эти команды на контейнер.

  • Когда активный документ внедряется в контейнер активных документов (например Office Binder), то контейнер может отправлять команды Печать, Страница Установка, Свойства и другие, содержащиеся в активный документ.

Эта простая маршрутизация команд может обрабатываться через существующие стандарты и IDispatch автоматизации. Однако преимущество при отладке с IDispatch больше, чем необходимо здесь, поэтому IOleCommandTarget предоставляет простое означает добиться тех же всех:

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

}

Метод QueryStatus здесь, поддерживается ли указанный набор команд, набор определяемое с Идентификатор GUID. Этот метод заполняет массив значений OLECMD (структур) со списком поддерживаемых команд, так и возвращает текст, описывающий имя команды или состоянии информации. Если вызывающий объект желает вызвать команду, он может передавать команды ( Идентификатор GUID) и задать значение Exec вместе с параметрами и аргументами, получение задний возвращаемое значение.

См. также

Основные понятия

Контейнеры активных документов