共用方式為


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;

成員

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

MAPI 函式的指標,以 ACCELERATEABSDI 原型或 NULL 為基礎。 此成員僅適用於對話框的非模式版本,如所設定的DIALOG_SDI旗標所示。 建置 ADRPARM 結構以傳遞至 IAddrBook::Address 的客戶 端必須一律將 lpfnABSDI 成員設定為 NULL。 如果已設定DIALOG_SDI旗標,MAPI 會在傳回之前將它設定為有效的函式。 用戶端會在其訊息迴圈中從呼叫此函式,以確保通訊簿對話框中的快捷鍵正常運作。 當對話框關閉且 MAPI 呼叫 lpfnDismiss 成員所指向的函式時,客戶端應該從其訊息迴圈中取消隱藏 ACCELERATEABSDI 函式。

lpfnDismiss

DISMISSMODELESS 原型或 NULL 為基礎的函式指標。 此成員僅適用於對話框的非模式版本,如所設定DIALOG_SDI旗標所示。 MAPI 會在使用者關閉非模式地址對話框時呼叫 DISMISSMODELESS 函式,通知呼叫 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
模 態
lpfnDismisslpvDismissContext
模 態
lpszCaption
強制回應和非強制回應
lpszNewEntryTitle
Modal
lpszDestWellsTitlecDestFieldsnDestFieldFocuslppszDestTitleslpulDestComps
Modal
lpContRestriction
強制回應和非強制回應
lpHierRestriction
強制回應和非強制回應

[非模式] 對話框是來自一或多個通訊簿容器之專案的只讀顯示。 對話框可以顯示所選容器中的所有專案,或僅限於符合限制所建立之準則的專案和容器。 lpContRestriction 所指向的內容限制可以限制顯示的項目類型,而 lpHierRestriction 所指向的階層限制可以限制提供專案的容器。 若要在關閉對話框時通知呼叫端,MAPI 會叫用由符合 DISMISSMODELESS 原型的呼叫端所提供的函式。 另一個符合 ACCELERATEABSDI 原型的函式是由 MAPI 提供,並由 Windows 訊息迴圈中的呼叫端叫用,以利鍵盤快捷方式的運作。 當用戶端呼叫 IAddrBook::Address 或服務提供者呼叫 IMAPISupport::Address 時,可以顯示 MAPI 位址對話框的非模式版本。

模式對話框是來自一或多個容器的項目讀取/寫入顯示。 其內容可能會受到 lpContRestrictionlpHierRestriction 成員中所設定的限制,以與非模式版本相同的方式影響。 除了顯示容器專案的清單框之外,模式對話方塊還可以包含一到三個文字框控件,以保存使用者選取的專案。 每個編輯控制件都會與特定收件者類型或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 的目前實作對於非零的任何結構版本都會失敗。

未來的結構版本可能完全不同;它們可能不支援 version-zero 結構。 下列宏是用來從 ulFlags 成員擷取版本號碼,以及將它與定義的旗標結合:

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

另請參閱