Win32 API 日本語リファレンス
ホームSystem.AddressBook › ADRPARM

ADRPARM

構造体
サイズx64: 136 バイト / x86: 72 バイト

サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。

フィールド

フィールドサイズx64x86説明
cbABContEntryIDDWORD4+0+0lpABContEntryIDが指すエントリIDのバイト長。
lpABContEntryIDENTRYID*8/4+8+4初期表示するアドレス帳コンテナのエントリIDへのポインタ。NULL可。
ulFlagsDWORD4+16+8ダイアログの動作を制御するフラグ。DIALOG_MODAL/AB_SELECTONLY等を組み合わせる。
lpReservedvoid*8/4+24+12予約済み。NULLを設定する。
ulHelpContextDWORD4+32+16ヘルプファイル内のヘルプコンテキストID。
lpszHelpFileNameCHAR*8/4+40+20関連付けるヘルプファイル名へのポインタ。NULL可。
lpfnABSDILPFNABSDI8/4+48+24アドレス選択ダイアログのコールバック関数へのポインタ。NULL可。
lpfnDismissLPFNDISMISS8/4+56+28ダイアログ終了時に呼ばれるコールバック関数へのポインタ。NULL可。
lpvDismissContextvoid*8/4+64+32Dismissコールバックに渡すユーザー定義コンテキストへのポインタ。
lpszCaptionCHAR*8/4+72+36ダイアログのタイトルバーに表示する文字列へのポインタ。NULL可。
lpszNewEntryTitleCHAR*8/4+80+40新規エントリボタン用のタイトル文字列へのポインタ。NULL可。
lpszDestWellsTitleCHAR*8/4+88+44宛先ウェル領域の見出し文字列へのポインタ。NULL可。
cDestFieldsDWORD4+96+48宛先フィールド(宛先/CC/BCC等)の数。
nDestFieldFocusDWORD4+100+52初期フォーカスを置く宛先フィールドの0起点インデックス。
lppszDestTitlesCHAR**8/4+104+56各宛先フィールドの見出し文字列配列へのポインタ。
lpulDestCompsDWORD*8/4+112+60各宛先フィールドに対応する受信者種別(MAPI_TO等)配列へのポインタ。
lpContRestrictionSRestriction*8/4+120+64コンテンツ表示に適用する制限(SRestriction)へのポインタ。NULL可。
lpHierRestrictionSRestriction*8/4+128+68階層表示に適用する制限(SRestriction)へのポインタ。NULL可。

公式ドキュメント

Applies to: 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;

解説(Remarks)

ADRPARM 構造体は、MAPI の共通アドレス ダイアログ ボックスの外観と動作を制御するために、クライアントおよびサービス プロバイダーによって使用されます。アドレス ダイアログ ボックスには、モードレスとモーダルの 2 種類があります。ADRPARM 構造体のメンバーの一部は両方の種類のダイアログ ボックスに適用されますが、一部は 2 つのうち一方にのみ適用されます。次の表は、ADRPARM 構造体のメンバーと、共通アドレス ダイアログ ボックスでの用途との対応を示しています。

ADRPARM のメンバー ダイアログ ボックスの種類
cbABContEntryIDlpABContEntryID
モーダルおよびモードレス
ulFlags
モーダルおよびモードレス
lpReserved
モーダルおよびモードレス
ulHelpContextlpszHelpFileName
モーダルおよびモードレス
lpfnABSDI
モードレス
lpfnDismisslpvDismissContext
モードレス
lpszCaption
モーダルおよびモードレス
lpszNewEntryTitle
モーダル
lpszDestWellsTitlecDestFieldsnDestFieldFocuslppszDestTitleslpulDestComps
モーダル
lpContRestriction
モーダルおよびモードレス
lpHierRestriction
モーダルおよびモードレス

モードレス ダイアログ ボックスは、1 つ以上のアドレス帳コンテナーのエントリを読み取り専用で表示します。このダイアログ ボックスは、選択されたコンテナーのすべてのエントリを表示することも、制限 (restriction) によって設定された条件に一致するエントリおよびコンテナーのみに限定することもできます。lpContRestriction が指すコンテンツ制限は表示されるエントリの種類を制限でき、lpHierRestriction が指す階層制限はエントリを提供するコンテナーを制限できます。ダイアログ ボックスが閉じられたことを呼び出し元に通知するために、MAPI は DISMISSMODELESS のプロトタイプに一致する、呼び出し元が用意した関数を呼び出します。また、ACCELERATEABSDI のプロトタイプに一致するもう 1 つの関数は MAPI が提供し、キーボード ショートカットを機能させるために、呼び出し元が Windows のメッセージ ループ内で呼び出します。MAPI アドレス ダイアログ ボックスのモードレス版は、クライアントが IAddrBook::Address を呼び出したとき、またはサービス プロバイダーが IMAPISupport::Address を呼び出したときに表示できます。

モーダル ダイアログ ボックスは、1 つ以上のコンテナーのエントリを読み取り/書き込み可能な形で表示します。その内容は、モードレス版と同様に、lpContRestriction メンバーおよび lpHierRestriction メンバーに設定された制限の影響を受けます。コンテナーのエントリを表示するリスト ボックスに加えて、モーダル ダイアログ ボックスには、ユーザーが選択したエントリを保持するためのテキスト ボックス コントロールを1 個から 3 個まで含めることができます。各編集コントロールは、MAPI_TO などの特定の受信者の種類、つまり PR_RECIPIENT_TYPE プロパティに関連付けられます。モーダル アドレス ダイアログ ボックスは、いずれかの Address メソッドによって、またはクライアントが IAddrBook::Details を呼び出したときやサービス プロバイダーが IMAPISupport::Details を呼び出したときに表示できます。

この図には 2 つのテキスト ボックス コントロールが含まれていますが、これはこのダイアログ ボックスの表示を制御する ADRPARM 構造体の cDestFields メンバーが 2 に設定されているためです。nDestFieldFocus メンバーが 0 に設定されているため、最初のコントロールが初期フォーカスを持ちます。

lpszNewEntryTitle メンバーは、選択されると追加のダイアログ ボックスを表示するボタンのラベル用テキストを指します。通常は、モーダル ダイアログ ボックスの図に示されているように、ボタンには New というラベルが付き、表示されるダイアログ ボックスには、プロファイル内のいずれかのアドレス帳プロバイダーが作成できるアドレスの種類がすべて一覧表示されます。クライアントは、ユーザーがこのボタンを選択したときに IAddrBook::NewEntry を呼び出し、cbEidNewEntryTpl パラメーターに 0 を、lpEidNewEntryTpl パラメーターに NULL を渡すことで、この New Entry ダイアログ ボックスを表示します。このダイアログ ボックスに含まれる情報は、MAPI のワンオフ テーブルから取得されます。

このダイアログ ボックスの各エントリは、その種類のアドレスを作成するために必要なデータを入力するためのテンプレートに関連付けられています。ほとんどのアドレス帳プロバイダーは、作成できるアドレス エントリの種類ごとに 1 つのテンプレートを提供します。ユーザーがこのダイアログ ボックスで選択を行うと、MAPI は対応するテンプレートを表示します。

ADRPARM 構造体の ulFlags メンバーの上位 4 ビットには、ADRPARM 構造体のバージョンを識別するバージョン番号が格納されます。現在のバージョンは 0 (ゼロ)、すなわち ADRPARM_HELP_CTX です。現在の MAPI の実装では、0 以外のバージョンの構造体はすべて失敗します。

構造体の将来のバージョンは、完全に異なるものになる可能性があります。バージョン 0 の構造体をサポートしない可能性もあります。ulFlags メンバーからバージョン番号を抽出し、定義済みのフラグと組み合わせるために、次のマクロが提供されています。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp)

各言語での定義

#include <windows.h>

// ADRPARM  (x64 136 / x86 72 バイト)
typedef struct ADRPARM {
    DWORD cbABContEntryID;
    ENTRYID* lpABContEntryID;
    DWORD ulFlags;
    void* lpReserved;
    DWORD ulHelpContext;
    CHAR* lpszHelpFileName;
    LPFNABSDI lpfnABSDI;
    LPFNDISMISS lpfnDismiss;
    void* lpvDismissContext;
    CHAR* lpszCaption;
    CHAR* lpszNewEntryTitle;
    CHAR* lpszDestWellsTitle;
    DWORD cDestFields;
    DWORD nDestFieldFocus;
    CHAR** lppszDestTitles;
    DWORD* lpulDestComps;
    SRestriction* lpContRestriction;
    SRestriction* lpHierRestriction;
} ADRPARM;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct ADRPARM
{
    public uint cbABContEntryID;
    public IntPtr lpABContEntryID;
    public uint ulFlags;
    public IntPtr lpReserved;
    public uint ulHelpContext;
    public IntPtr lpszHelpFileName;
    public IntPtr lpfnABSDI;
    public IntPtr lpfnDismiss;
    public IntPtr lpvDismissContext;
    public IntPtr lpszCaption;
    public IntPtr lpszNewEntryTitle;
    public IntPtr lpszDestWellsTitle;
    public uint cDestFields;
    public uint nDestFieldFocus;
    public IntPtr lppszDestTitles;
    public IntPtr lpulDestComps;
    public IntPtr lpContRestriction;
    public IntPtr lpHierRestriction;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure ADRPARM
    Public cbABContEntryID As UInteger
    Public lpABContEntryID As IntPtr
    Public ulFlags As UInteger
    Public lpReserved As IntPtr
    Public ulHelpContext As UInteger
    Public lpszHelpFileName As IntPtr
    Public lpfnABSDI As IntPtr
    Public lpfnDismiss As IntPtr
    Public lpvDismissContext As IntPtr
    Public lpszCaption As IntPtr
    Public lpszNewEntryTitle As IntPtr
    Public lpszDestWellsTitle As IntPtr
    Public cDestFields As UInteger
    Public nDestFieldFocus As UInteger
    Public lppszDestTitles As IntPtr
    Public lpulDestComps As IntPtr
    Public lpContRestriction As IntPtr
    Public lpHierRestriction As IntPtr
End Structure
import ctypes
from ctypes import wintypes

class ADRPARM(ctypes.Structure):
    _fields_ = [
        ("cbABContEntryID", wintypes.DWORD),
        ("lpABContEntryID", ctypes.c_void_p),
        ("ulFlags", wintypes.DWORD),
        ("lpReserved", ctypes.c_void_p),
        ("ulHelpContext", wintypes.DWORD),
        ("lpszHelpFileName", ctypes.c_void_p),
        ("lpfnABSDI", ctypes.c_void_p),
        ("lpfnDismiss", ctypes.c_void_p),
        ("lpvDismissContext", ctypes.c_void_p),
        ("lpszCaption", ctypes.c_void_p),
        ("lpszNewEntryTitle", ctypes.c_void_p),
        ("lpszDestWellsTitle", ctypes.c_void_p),
        ("cDestFields", wintypes.DWORD),
        ("nDestFieldFocus", wintypes.DWORD),
        ("lppszDestTitles", ctypes.c_void_p),
        ("lpulDestComps", ctypes.c_void_p),
        ("lpContRestriction", ctypes.c_void_p),
        ("lpHierRestriction", ctypes.c_void_p),
    ]
#[repr(C)]
pub struct ADRPARM {
    pub cbABContEntryID: u32,
    pub lpABContEntryID: *mut core::ffi::c_void,
    pub ulFlags: u32,
    pub lpReserved: *mut core::ffi::c_void,
    pub ulHelpContext: u32,
    pub lpszHelpFileName: *mut core::ffi::c_void,
    pub lpfnABSDI: *mut core::ffi::c_void,
    pub lpfnDismiss: *mut core::ffi::c_void,
    pub lpvDismissContext: *mut core::ffi::c_void,
    pub lpszCaption: *mut core::ffi::c_void,
    pub lpszNewEntryTitle: *mut core::ffi::c_void,
    pub lpszDestWellsTitle: *mut core::ffi::c_void,
    pub cDestFields: u32,
    pub nDestFieldFocus: u32,
    pub lppszDestTitles: *mut core::ffi::c_void,
    pub lpulDestComps: *mut core::ffi::c_void,
    pub lpContRestriction: *mut core::ffi::c_void,
    pub lpHierRestriction: *mut core::ffi::c_void,
}
import "golang.org/x/sys/windows"

type ADRPARM struct {
	cbABContEntryID uint32
	lpABContEntryID uintptr
	ulFlags uint32
	lpReserved uintptr
	ulHelpContext uint32
	lpszHelpFileName uintptr
	lpfnABSDI uintptr
	lpfnDismiss uintptr
	lpvDismissContext uintptr
	lpszCaption uintptr
	lpszNewEntryTitle uintptr
	lpszDestWellsTitle uintptr
	cDestFields uint32
	nDestFieldFocus uint32
	lppszDestTitles uintptr
	lpulDestComps uintptr
	lpContRestriction uintptr
	lpHierRestriction uintptr
}
type
  ADRPARM = record
    cbABContEntryID: DWORD;
    lpABContEntryID: Pointer;
    ulFlags: DWORD;
    lpReserved: Pointer;
    ulHelpContext: DWORD;
    lpszHelpFileName: Pointer;
    lpfnABSDI: Pointer;
    lpfnDismiss: Pointer;
    lpvDismissContext: Pointer;
    lpszCaption: Pointer;
    lpszNewEntryTitle: Pointer;
    lpszDestWellsTitle: Pointer;
    cDestFields: DWORD;
    nDestFieldFocus: DWORD;
    lppszDestTitles: Pointer;
    lpulDestComps: Pointer;
    lpContRestriction: Pointer;
    lpHierRestriction: Pointer;
  end;
const ADRPARM = extern struct {
    cbABContEntryID: u32,
    lpABContEntryID: ?*anyopaque,
    ulFlags: u32,
    lpReserved: ?*anyopaque,
    ulHelpContext: u32,
    lpszHelpFileName: ?*anyopaque,
    lpfnABSDI: ?*anyopaque,
    lpfnDismiss: ?*anyopaque,
    lpvDismissContext: ?*anyopaque,
    lpszCaption: ?*anyopaque,
    lpszNewEntryTitle: ?*anyopaque,
    lpszDestWellsTitle: ?*anyopaque,
    cDestFields: u32,
    nDestFieldFocus: u32,
    lppszDestTitles: ?*anyopaque,
    lpulDestComps: ?*anyopaque,
    lpContRestriction: ?*anyopaque,
    lpHierRestriction: ?*anyopaque,
};
type
  ADRPARM {.bycopy.} = object
    cbABContEntryID: uint32
    lpABContEntryID: pointer
    ulFlags: uint32
    lpReserved: pointer
    ulHelpContext: uint32
    lpszHelpFileName: pointer
    lpfnABSDI: pointer
    lpfnDismiss: pointer
    lpvDismissContext: pointer
    lpszCaption: pointer
    lpszNewEntryTitle: pointer
    lpszDestWellsTitle: pointer
    cDestFields: uint32
    nDestFieldFocus: uint32
    lppszDestTitles: pointer
    lpulDestComps: pointer
    lpContRestriction: pointer
    lpHierRestriction: pointer
struct ADRPARM
{
    uint cbABContEntryID;
    void* lpABContEntryID;
    uint ulFlags;
    void* lpReserved;
    uint ulHelpContext;
    void* lpszHelpFileName;
    void* lpfnABSDI;
    void* lpfnDismiss;
    void* lpvDismissContext;
    void* lpszCaption;
    void* lpszNewEntryTitle;
    void* lpszDestWellsTitle;
    uint cDestFields;
    uint nDestFieldFocus;
    void* lppszDestTitles;
    void* lpulDestComps;
    void* lpContRestriction;
    void* lpHierRestriction;
}

HSP用 定義

HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; ADRPARM サイズ: 72 バイト(x86)
dim st, 18    ; 4byte整数×18(構造体サイズ 72 / 4 切り上げ)
; cbABContEntryID : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; lpABContEntryID : ENTRYID* (+4, 4byte)  varptr(st)+4 を基点に操作(4byte:入れ子/配列)
; ulFlags : DWORD (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; lpReserved : void* (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; ulHelpContext : DWORD (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; lpszHelpFileName : CHAR* (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; lpfnABSDI : LPFNABSDI (+24, 4byte)  st.6 = 値  /  値 = st.6   (lpoke/lpeek も可)
; lpfnDismiss : LPFNDISMISS (+28, 4byte)  st.7 = 値  /  値 = st.7   (lpoke/lpeek も可)
; lpvDismissContext : void* (+32, 4byte)  st.8 = 値  /  値 = st.8   (lpoke/lpeek も可)
; lpszCaption : CHAR* (+36, 4byte)  st.9 = 値  /  値 = st.9   (lpoke/lpeek も可)
; lpszNewEntryTitle : CHAR* (+40, 4byte)  st.10 = 値  /  値 = st.10   (lpoke/lpeek も可)
; lpszDestWellsTitle : CHAR* (+44, 4byte)  st.11 = 値  /  値 = st.11   (lpoke/lpeek も可)
; cDestFields : DWORD (+48, 4byte)  st.12 = 値  /  値 = st.12   (lpoke/lpeek も可)
; nDestFieldFocus : DWORD (+52, 4byte)  st.13 = 値  /  値 = st.13   (lpoke/lpeek も可)
; lppszDestTitles : CHAR** (+56, 4byte)  st.14 = 値  /  値 = st.14   (lpoke/lpeek も可)
; lpulDestComps : DWORD* (+60, 4byte)  st.15 = 値  /  値 = st.15   (lpoke/lpeek も可)
; lpContRestriction : SRestriction* (+64, 4byte)  varptr(st)+64 を基点に操作(4byte:入れ子/配列)
; lpHierRestriction : SRestriction* (+68, 4byte)  varptr(st)+68 を基点に操作(4byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; ADRPARM サイズ: 136 バイト(x64)
dim st, 34    ; 4byte整数×34(構造体サイズ 136 / 4 切り上げ)
; cbABContEntryID : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; lpABContEntryID : ENTRYID* (+8, 8byte)  varptr(st)+8 を基点に操作(8byte:入れ子/配列)
; ulFlags : DWORD (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; lpReserved : void* (+24, 8byte)  qpoke st,24,値 / qpeek(st,24)  ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; ulHelpContext : DWORD (+32, 4byte)  st.8 = 値  /  値 = st.8   (lpoke/lpeek も可)
; lpszHelpFileName : CHAR* (+40, 8byte)  qpoke st,40,値 / qpeek(st,40)  ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; lpfnABSDI : LPFNABSDI (+48, 8byte)  qpoke st,48,値 / qpeek(st,48)  ※IronHSPのみ。3.7/3.8は lpoke st,48,下位 : lpoke st,52,上位
; lpfnDismiss : LPFNDISMISS (+56, 8byte)  qpoke st,56,値 / qpeek(st,56)  ※IronHSPのみ。3.7/3.8は lpoke st,56,下位 : lpoke st,60,上位
; lpvDismissContext : void* (+64, 8byte)  qpoke st,64,値 / qpeek(st,64)  ※IronHSPのみ。3.7/3.8は lpoke st,64,下位 : lpoke st,68,上位
; lpszCaption : CHAR* (+72, 8byte)  qpoke st,72,値 / qpeek(st,72)  ※IronHSPのみ。3.7/3.8は lpoke st,72,下位 : lpoke st,76,上位
; lpszNewEntryTitle : CHAR* (+80, 8byte)  qpoke st,80,値 / qpeek(st,80)  ※IronHSPのみ。3.7/3.8は lpoke st,80,下位 : lpoke st,84,上位
; lpszDestWellsTitle : CHAR* (+88, 8byte)  qpoke st,88,値 / qpeek(st,88)  ※IronHSPのみ。3.7/3.8は lpoke st,88,下位 : lpoke st,92,上位
; cDestFields : DWORD (+96, 4byte)  st.24 = 値  /  値 = st.24   (lpoke/lpeek も可)
; nDestFieldFocus : DWORD (+100, 4byte)  st.25 = 値  /  値 = st.25   (lpoke/lpeek も可)
; lppszDestTitles : CHAR** (+104, 8byte)  qpoke st,104,値 / qpeek(st,104)  ※IronHSPのみ。3.7/3.8は lpoke st,104,下位 : lpoke st,108,上位
; lpulDestComps : DWORD* (+112, 8byte)  qpoke st,112,値 / qpeek(st,112)  ※IronHSPのみ。3.7/3.8は lpoke st,112,下位 : lpoke st,116,上位
; lpContRestriction : SRestriction* (+120, 8byte)  varptr(st)+120 を基点に操作(8byte:入れ子/配列)
; lpHierRestriction : SRestriction* (+128, 8byte)  varptr(st)+128 を基点に操作(8byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global ADRPARM
    #field int cbABContEntryID
    #field intptr lpABContEntryID
    #field int ulFlags
    #field intptr lpReserved
    #field int ulHelpContext
    #field intptr lpszHelpFileName
    #field intptr lpfnABSDI
    #field intptr lpfnDismiss
    #field intptr lpvDismissContext
    #field intptr lpszCaption
    #field intptr lpszNewEntryTitle
    #field intptr lpszDestWellsTitle
    #field int cDestFields
    #field int nDestFieldFocus
    #field intptr lppszDestTitles
    #field intptr lpulDestComps
    #field intptr lpContRestriction
    #field intptr lpHierRestriction
#endstruct

stdim st, ADRPARM        ; NSTRUCT 変数を確保
st->cbABContEntryID = 100
mes "cbABContEntryID=" + st->cbABContEntryID