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


Целевые объекты сообщений и команды

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

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

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

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

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

Эта маршрутизация простой команды может обрабатываться с помощью существующих стандарты и 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 вместе с параметрами и аргументами, принимающее задне возвращаемое значение.

См. также

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

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