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


Реализация объекта управления

Область применения: Outlook 2013 | Outlook 2016

Объекты управления или объекты, поддерживающие интерфейс IMAPIControl : IUnknown , реализуются поставщиками для добавления функциональных возможностей к кнопке, которая отображается в диалоговом окне MAPI. Объекты управления можно реализовать только для кнопок.

IMAPIControl имеет три метода: GetLastError, GetState и Activate.

MAPI вызывает GetState , чтобы определить, следует ли отключить кнопку. Метод GetState вызывается в следующих ситуациях:

  • При первом отображении диалогового окна, в котором отображается кнопка.

  • При выдаче уведомления таблицы отображения для кнопки.

Задайте для содержимого параметра lpulState значение MAPI_DISABLED, если пользователь не может взаимодействовать с кнопкой, и MAPI_ENABLED, если пользователь может взаимодействовать.

Когда пользователь нажимает кнопку, MAPI вызывает Активировать. Активировать выполняет задачу, связанную с кнопкой. Эта задача может быть любым подходящим для вашего поставщика, например отображение диалогового окна или обновление свойства. Если задача не выполнена, так как пользователь ее отменил, верните MAPI_E_USER_CANCEL. Для других причин сбоя верните соответствующее значение ошибки.

Если задача выполнена успешно и связана с изменением свойства, которое отражено в другом элементе управления в диалоговом окне, вызовите ITableData::HrNotify. HrNotify вызывается для выдачи уведомления таблицы отображения с измененным свойством PR_CONTROL_ID (PidTagControlId) в структуре TABLE_NOTIFICATION . Не помещайте новое значение свойства в структуру; Вместо этого возвращается при вызове IMAPIProp::GetProps . Хотя обычно уведомление таблицы отображения невозможно использовать для отключения или включения элемента управления, его можно использовать с кнопкой. MAPI обновит измененный элемент управления, чтобы ответить на уведомление.

MAPI вызывает метод GetLastError элемента управления, когда Функция Активация возвращает ошибку, отличное от MAPI_E_USER_CANCEL. Если GetLastError помещает расширенные сведения об ошибке в структуру MAPIERROR , возвращаемую в содержимом параметра the_lppMAPIError_, MAPI отображает их для пользователя.

См. также

Поставщики услуг MAPI