Реализация объекта управления
Область применения: 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 отображает их для пользователя.