控件对象实现

适用于:Outlook 2013 | Outlook 2016

控件对象或支持 IMAPIControl : IUnknown 接口的对象由提供程序实现,以向 MAPI 对话框中显示的按钮添加功能。 控件对象只能为按钮实现。

IMAPIControl 有三种方法: GetLastErrorGetStateActivate

MAPI 调用 GetState 以确定是否禁用该按钮。 在以下情况下调用 GetState

  • 首次显示按钮所在的对话框时。

  • 为按钮发出显示表通知时。

如果用户无法与按钮交互,请将 lpulState 参数的内容设置为MAPI_DISABLED;如果用户可以交互,则MAPI_ENABLED。

当用户单击按钮时,MAPI 将调用 ActivateActivate 执行已与按钮关联的任务。 此任务可以是适合提供程序的任何任务,例如显示对话框或更新属性。 如果任务因用户取消而失败,则返回MAPI_E_USER_CANCEL。 对于其他失败原因,请返回相应的错误值。

如果任务成功,并且它链接到该对话框上的另一个控件中反映的属性更改,请调用 ITableData::HrNotify。 调用 HrNotify 以在 TABLE_NOTIFICATION 结构中使用已更改属性的PR_CONTROL_ID (PidTagControlId) 属性发出显示表通知。 不要在 结构中放置新的属性值;相反,在调用 IMAPIProp::GetProps 时返回它。 尽管通常不能使用显示表通知来禁用或启用控件,但它可与按钮一起使用。 MAPI 将刷新更改的控件以响应通知。

Activate 返回MAPI_E_USER_CANCEL以外的错误时,MAPI 将调用控件的 GetLastError 方法。 如果 GetLastError 将扩展错误信息放置在 MAPIERROR 结构中,该信息在 the_lppMAPIError_ 参数的内容中返回,则 MAPI 会向用户显示该信息。

另请参阅

MAPI 服务提供商