显示表

适用于:Outlook 2013 | Outlook 2016

显示表描述如何显示特定类型的对话框,其中一个对话框具有一个或多个选项卡式属性页,专用于显示并可能编辑一个或多个属性。 与每个显示表关联的是 IMAPIProp :IUnknown 接口实现。 IMAPIProp 实现维护对话框中显示的属性数据。

显示表中的行表示对话框中显示的控件或用户界面对象。 MAPI 定义许多类型的控件,其中一些具有静态值,一些具有用户可以更改的动态值。 大多数控件都可以与 使用 IMAPIProp 实现维护的属性相关联。 当用户更改可修改控件的值时,将更新相应的属性。

服务提供程序实现显示表和 IMAPIProp 接口。 创建显示表类似于使用脚本语言编写程序。 服务提供商可以通过以下方式创建显示表:

BuildDisplayTable 函数将显示表结构中的信息与对话框资源的可视元素组合在一起,以生成显示表行。 函数返回一个指向 IMAPITable 的指针:IUnknown 接口实现,如果请求,则返回指向 ITableData 接口实现的指针。

使用 BuildDisplayTable 创建显示表非常简单,在显示视觉元素发生更改时更易于维护。 但是,不喜欢使用 BuildDisplayTable 的服务提供商可以使用使用 ITableData 方法的自定义代码创建显示表。 例如,对其属性页具有现有模板结构的服务提供商可能希望创建自定义代码,而不是使用 BuildDisplayTable

服务提供商可通过多种方式为其显示表实现属性接口。 包括:

实现类型取决于要显示的数据的特征和负责任的服务提供商。 例如,如果两个编辑控件中的数据与其中一个控件更改之间存在隐式关系, 则 IMAPIProp 实现必须相应地更改另一个控件的值。

显示表在其所需的列集中具有以下属性:

PR_XPOS (PidTagXCoordinate)
PR_YPOS (PidTagYCoordinate)
PR_DELTAX (PidTagDeltaX)
PR_DELTAY (PidTagDeltaY)
PR_CONTROL_TYPE (PidTagControlType)
PR_CONTROL_FLAGS (PidTagControlFlags)
PR_CONTROL_STRUCTURE (PidTagControlStructure)
PR_CONTROL_ID (PidTagControlId)

PR_XPOSPR_YPOS 指定控件左上角的 X 和 Y 坐标。 水平单位是对话框基本宽度单位的 1/4;垂直单位是对话框基本高度单位的 1/8。 Windows 根据当前系统字体的高度和宽度计算当前对话框基单位。 坐标相对于属性页区域的原点。 属性页的大小限制为大约 200 个,由 180 个对话框单位。

PR_DELTAXPR_DELTAY 是控件的宽度和高度。 这些是 ULONG 值。 宽度单位是对话框基本宽度单位的 1/4;高度单位是对话框基本高度单位的 1/8。 坐标相对于控件的原点。

其他四个属性描述控件的各种特征。 PR_CONTROL_TYPE 指示控件的类型。 MAPI 定义了 12 种类型的控件,每种控件都有一组不同的属性。 标志属性 PR_CONTROL_FLAGS中介绍了这些属性。 属性的示例包括控件是否可编辑或必需。

控件结构 (PR_CONTROL_STRUCTURE)包含与特定类型的控件相关的信息。 每种类型的控件都使用不同的结构进行描述。 例如,使用 DTBLEDIT 结构描述编辑控件。 DTBLEDIT 结构包含成员,这些成员列出了可放置在控件上的字符数和特定类型的字符,以及一个属性标记,用于标识其值将在控件中显示的属性。 PR_CONTROL_STRUCTURE 存储为二进制属性。

控件标识符 PR_CONTROL_ID唯一标识显示表描述的对话框中的控件。 PR_CONTROL_ID是从位于 DTCTL 结构的 lpbNotifcbNotif 成员中的值设置的,BuildDisplayTable 用于创建显示表。 由于 MAPI 有时合并显示表, 因此PR_CONTROL_ID 中的标识符应始终是唯一的。 通常,提供程序将 GUID 结构分配给 PR_CONTROL_ID ,以确保其唯一性。 生成显示表通知时, PR_CONTROL_ID 属性包含在 TABLE_NOTIFICATION 结构中。

有关显示表的详细信息,请参阅 显示表实现关于显示表通知

另请参阅

MAPI 表