ADRPARM

适用于:Outlook 2013 | Outlook 2016

描述公共地址对话框的显示和行为。

说明
标头文件:
Mapidefs.h
typedef struct _ADRPARM
{
  ULONG cbABContEntryID;
  LPENTRYID lpABContEntryID;
  ULONG ulFlags;
  LPVOID lpReserved;
  ULONG ulHelpContext;
  LPSTR lpszHelpFileName;
  LPFNABSDI lpfnABSDI;
  LPFNDISMISS lpfnDismiss;
  LPVOID lpvDismissContext;
  LPSTR lpszCaption;
  LPSTR lpszNewEntryTitle;
  LPSTR lpszDestWellsTitle;
  ULONG cDestFields;
  ULONG nDestFieldFocus;
  LPSTR FAR *lppszDestTitles;
  ULONG FAR *lpulDestComps;
  LPSRestriction lpContRestriction;
  LPSRestriction lpHierRestriction;
} ADRPARM, FAR *LPADRPARM;

Members

cbABContEntryID

lpABContEntryID 指向的条目标识符中的字节计数。

lpABContEntryID

指向容器的入口标识符的指针,该容器提供地址对话框中显示的初始收件人地址列表。

ulFlags

与各种地址对话框选项关联的标志的位掩码。 可以设置以下标志:

AB_RESOLVE

启用在地址对话框关闭后要解析的所有名称。 如果名称解析过程导致条目不明确,则会出现一个对话框,提示用户帮助解决它们。 设置此标志可确保解析 IAddrBook::Address 返回的所有名称。

AB_SELECTONLY

禁用为收件人列表创建一次性地址。 仅当对话框是模式对话框时,才使用此标志,如设置的DIALOG_MODAL标志所示。

ADDRESS_ONE

用户可以从列表中选择一个收件人,而不是多个收件人。 仅当 cDestFields 为零且对话框为模式时,此标志才有效,如设置DIALOG_MODAL标志所示。

DIALOG_MODAL

导致显示通用地址对话框的模式版本。 应设置此标志或DIALOG_SDI;不能同时设置它们。

DIALOG_OPTIONS

使“ 发送选项” 按钮显示在对话框中。 仅当对话框是模式对话框时,才使用此标志,如设置的DIALOG_MODAL标志所示。

DIALOG_SDI

导致显示通用地址对话框的无模式版本。 应设置此标志或DIALOG_MODAL;不能同时设置它们。 对于非 Outlook 客户端,将忽略DIALOG_SDI标志,并且将显示对话框的模式版本。 因此,不应在 IAddrBook::AddresslpulUIParam 参数中预期有指向句柄的指针。

lpReserved

保留的 必须为零。

ulHelpContext

指定“ 帮助” 中的上下文,当用户单击地址对话框中的“帮助”按钮时,该上下文将首先显示。

lpszHelpFileName

指向将与地址对话框关联的帮助文件名称的指针。 lpszHelpFileName 成员与 ulHelpContext 一起使用,以调用 Windows WinHelp 函数。

lpfnABSDI

指向基于 ACCELERATEABSDI 原型或 NULL 的 MAPI 函数的指针。 此成员仅适用于对话框的无模式版本,如所设置DIALOG_SDI标志所示。 生成要传递给 IAddrBook::Address的 ADRPARM 结构的客户端必须始终将 lpfnABSDI 成员设置为 NULL。 如果设置了DIALOG_SDI标志,MAPI 将在返回前将其设置为有效的函数。 客户端在其消息循环中从 调用此函数,以确保通讯簿对话框中的快捷键正常工作。 当对话框被消除并且 MAPI 调用 lpfnDismiss 成员指向的函数时,客户端应从其消息循环中取消挂钩 ACCELERATEABSDI 函数。

lpfnDismiss

指向基于 DISMISSMODELESS 原型或 NULL 的函数的指针。 此成员仅适用于对话框的无模式版本,如设置DIALOG_SDI标志所示。 当用户关闭无模式地址对话框时,MAPI 调用 DISMISSMODLESS 函数,通知调用 IAddrBook::Address 的客户端该对话框不再处于活动状态。

lpvDismissContext

指向要传递给 lpfnDismiss 成员指向的 DISMISSMODELESS 函数的上下文信息的指针。 此成员仅适用于对话框的无模式版本,如设置DIALOG_SDI标志所示。

lpszCaption

指向要用作公共地址对话框标题的文本的指针。

lpszNewEntryTitle

指向要用作按钮标签的文本的指针,该按钮调用“ 新建条目 ”对话框或另一个对话框。

lpszDestWellsTitle

指向要用作收件人文本框控件标题的文本的指针,这些控件可出现在常见地址对话框的模式版本中。 此成员不用于无模式对话框。

cDestFields

地址对话框的模式版本中收件人文本框控件的计数;如果对话框是无模式的,则为零。 只有在满足以下条件时,地址对话框才会打开以供浏览:

  • cDestFields 成员设置为零。

  • 设置DIALOG_BOX标志。

  • 未设置ADDRESS_ONE标志。

    cDestFields 设置为0XFFFFFFFF意味着 MAPI 应创建默认数量的收件人文本框控件。 在这种情况下, lppszDestTitleslpulDestComps 成员必须为 NULL。

nDestFieldFocus

指示在对话框的模式版本出现时应具有初始焦点的特定文本框控件。 此值必须介于 0 和 cDestFields 的值减 1 之间。

lppszDestTitles

指向与地址对话框模式版本中显示的每个文本框控件关联的按钮的标签数组的指针。 cDestFields 成员的值指示数组中包含的标签数。 如果 lppszDestTitles 成员为 NULL,则 Address 方法使用默认标题。

lpulDestComps

指向与每个文本框控件关联的收件人类型值(如MAPI_TO、MAPI_CC和MAPI_BCC)数组的指针。 CDestFields 成员的值指示数组中包含的收件人类型的数量。 lpulDestComps 指向的值可用于设置每个收件人的 PR_RECIPIENT_TYPE (PidTagRecipientType) 属性。 如果 lpulDestComps 成员为 NULL,则 Address 方法使用默认收件人类型。

lpContRestriction

指向 SRestriction 结构的指针,该结构限制可在对话框中显示的地址条目的类型。

lpHierRestriction

指向 SRestriction 结构的指针,该结构限制可以提供要显示在对话框中的地址条目的通讯簿容器。

备注

ADRPARM 结构由客户端和服务提供商用来控制 MAPI 通用地址对话框的外观和行为。 地址对话框有两种类型:无模式和模式。 ADRPARM 结构中的一些成员适用于对话框的两个版本,但有些成员仅适用于这两个版本之一。 下表将 ADRPARM 结构的成员与它们与通用地址对话框的使用相关联。

ADRPARM 成员 对话框的类型
cbABContEntryIDlpABContEntryID
模式和无模式
ulFlags
模式和无模式
lpReserved
模式和无模式
ulHelpContextlpszHelpFileName
模式和无模式
lpfnABSDI
Modeless
lpfnDismisslpvDismissContext
Modeless
lpszCaption
模式和无模式
lpszNewEntryTitle
Modal
lpszDestWellsTitlecDestFieldsnDestFieldFocuslppszDestTitleslpulDestComps
Modal
lpContRestriction
模式和无模式
lpHierRestriction
模式和无模式

无模式对话框是一个或多个通讯簿容器中条目的只读显示。 该对话框可以显示所选容器中的所有条目,或者只能显示与限制所建立的条件匹配的条目和容器。 lpContRestriction 指向的内容限制可以限制显示的条目类型,lpHierRestriction 指向的层次结构限制可以限制提供条目的容器。 为了在对话框被消除时通知调用方,MAPI 调用调用方提供的与 DISMISSMODELESS 原型匹配的函数。 另一个函数(与 ACCELERATEABSDI 原型匹配)由 MAPI 提供,并由 Windows 消息循环中的调用方调用,以促进键盘快捷方式的工作。 当客户端调用 IAddrBook::Address 或服务提供商调用 IMAPISupport::Address 时,可以显示 MAPI 地址对话框的无模式版本。

模式对话框是一个或多个容器中的条目的读/写显示。 受 lpContRestriction 和 lpHierRestriction 成员中设置的限制,其内容可能以与无模式版本相同的方式受到影响。 除了显示容器条目的列表框外,模式对话框还可以包含一到三个文本框控件,用于保存用户选择的条目。 每个编辑控件都与特定的收件人类型或 PR_RECIPIENT_TYPE 属性(例如MAPI_TO)相关联。 当客户端调用 IAddrBook::D etails 和服务提供商调用 IMAPISupport::D etails 时,都可以显示模式地址对话框。

此图包含两个文本框控件,因为控制此对话框显示的 ADRPARM 结构的 cDestFields 成员设置为 2。 第一个控件具有初始焦点,因为 nDestFieldFocus 成员设置为 0。

lpszNewEntryTitle 成员指向按钮标签的文本,选择该按钮标签时,该按钮标签会导致显示其他对话框。 通常,如模式对话框的插图所示,该按钮标记为 “新建 ”,显示的对话框列出了配置文件中任何通讯簿提供程序可以创建的所有类型的地址。 客户端通过调用 IAddrBook::NewEntry 并针对 cbEidNewEntryTpl 参数传递零,在用户选择按钮时为 lpEidNewEntryTpl 参数传递 NULL,从而显示此“新建条目”对话框。 此对话框中包含的信息来自 MAPI 一次性表。

此对话框中的每个条目都与一个模板相关联,用于输入创建特定类型的地址所需的数据。 大多数通讯簿提供商为他们可以创建的每种地址条目类型提供一个模板。 当用户从此对话框中进行选择时,MAPI 将显示相应的模板。

ADRPARM 结构的 ulFlags 成员中最重要的四位包含标识 ADRPARM 结构版本的版本号。 当前版本为 0 (零) 或ADRPARM_HELP_CTX。 对于除零以外的任何版本的结构,MAPI 的当前实现都将失败。

结构的未来版本可能完全不同:它们可能不支持版本零结构。 提供了以下宏,用于从 ulFlags 成员中提取版本号,并将其与定义的标志组合在一起:

  • GET_ADRPARM_VERSION (ulFlags)
  • SET_ADRPARM_VERSION (ulFlagsulVersion)
  • ADRPARM_HELP_CTX

另请参阅