DdeInitializeA 関数 (ddeml.h)

動的データ交換管理ライブラリ (DDEML) にアプリケーションを登録します。 アプリケーションは、他の動的データ交換管理ライブラリ (DDEML) 関数を呼び出す前に、この関数を呼び出す必要があります。

構文

UINT DdeInitializeA(
  [in, out] LPDWORD     pidInst,
  [in]      PFNCALLBACK pfnCallback,
  [in]      DWORD       afCmd,
            DWORD       ulRes
);

パラメーター

[in, out] pidInst

型: LPDWORD

アプリケーション インスタンス識別子。 初期化時に、このパラメーターは 0 を指す必要があります。 関数が成功した場合、このパラメーターはアプリケーションのインスタンス識別子を指します。 この値は、それを必要とする他のすべての DDEML 関数で idInst パラメーターとして渡す必要があります。 アプリケーションで DDEML ダイナミック リンク ライブラリ (DLL) の複数のインスタンスを使用する場合、アプリケーションはインスタンスごとに異なるコールバック関数を提供する必要があります。

pidInst が 0 以外の値を指している場合、DDEML の再初期化が暗黙的に行われます。 この場合、 pidInst は有効なアプリケーション インスタンス識別子を指す必要があります。

[in] pfnCallback

型: PFNCALLBACK

アプリケーション定義の DDE コールバック関数へのポインター。 この関数は、システムによって送信された DDE トランザクションを処理します。 詳細については、 DdeCallback コールバック関数を参照してください。

[in] afCmd

型: DWORD

APPCMD_、CBF_およびMF_フラグのセット。 APPCMD_ フラグは、DdeInitialize に特別な指示を提供します。 CBF_ フラグは、特定の種類のトランザクションがコールバック関数に到達できないようにするフィルターを指定します。 MF_ フラグは、DDE 監視アプリケーションが監視する DDE アクティビティの種類を指定します。 これらのフラグを使用すると、コールバック関数の不要な呼び出しを排除することで、DDE アプリケーションのパフォーマンスが向上します。

このパラメーターには、次の 1 つ以上の値を指定できます。

意味
APPCLASS_MONITOR
0x00000001L
アプリケーションがシステム内の DDE アクティビティを監視できるようにします。 このフラグは、DDE 監視アプリケーションで使用されます。 アプリケーションでは、1 つ以上のモニター フラグと APPCLASS_MONITOR フラグを組み合わせて、監視する DDE アクティビティの種類を指定します。 詳細については、次の「解説」セクションを参照してください。
APPCLASS_STANDARD
0x000000000L
アプリケーションを標準 (監視対象外) DDEML アプリケーションとして登録します。
APPCMD_CLIENTONLY
0x00000010L
アプリケーションが DDE 会話のサーバーにならないようにします。 アプリケーションはクライアントのみにできます。 このフラグは、DDEML によるリソースの消費を減らします。 これには、CBF_FAIL_ALLSVRXACTIONS フラグの機能が含まれています。
APPCMD_FILTERINITS
0x00000020L
DDEML は、アプリケーションが文字列ハンドルを作成してサービス名を登録するか、DdeNameService または DdeInitialize 関数の後続の呼び出しによるフィルター処理を無効にするまで、XTYP_CONNECTトランザクションとXTYP_WILDCONNECTトランザクションをアプリケーションに送信できないようにします。 アプリケーションがフラグを指定しているかどうかに関係なく、アプリケーションが DdeInitialize を初めて呼び出すとき、このフラグは常に有効です。 DdeInitialize の後続の呼び出しでは、このフラグを指定しないと、アプリケーションのサービス名フィルターがオフになりますが、それを指定すると、アプリケーションのサービス名フィルターがオンになります。
CBF_FAIL_ALLSVRXACTIONS
0x0003f000
コールバック関数がサーバー トランザクションを受信できないようにします。 システム は、トランザクション をこのアプリケーションに送信する各クライアントにDDE_FNOTPROCESSEDを返します。 このフラグは、すべてのCBF_FAIL_フラグを組み合わせた場合と同じです。
CBF_FAIL_ADVISES
0x00004000
コールバック関数が XTYP_ADVSTART および XTYP_ADVSTOP トランザクションを受信できないようにします。 システムは、 XTYP_ADVSTART または XTYP_ADVSTOP トランザクションをサーバーに送信する各クライアントに DDE_FNOTPROCESSED を返します。
CBF_FAIL_CONNECTIONS
0x00002000
コールバック関数が XTYP_CONNECT および XTYP_WILDCONNECT トランザクションを受信できないようにします。
CBF_FAIL_EXECUTES
0x00008000
コールバック関数が XTYP_EXECUTE トランザクションを受信できないようにします。 システムは 、XTYP_EXECUTE トランザクションをサーバーに送信するクライアントに DDE_FNOTPROCESSED を返します。
CBF_FAIL_POKES
0x00010000
コールバック関数が XTYP_POKE トランザクションを受信できないようにします。 システムは 、XTYP_POKE トランザクションをサーバーに送信するクライアントに DDE_FNOTPROCESSED を返します。
CBF_FAIL_REQUESTS
0x00020000
コールバック関数が XTYP_REQUEST トランザクションを受信できないようにします。 システムは 、XTYP_REQUEST トランザクションをサーバーに送信するクライアントに DDE_FNOTPROCESSED を返します。
CBF_FAIL_SELFCONNECTIONS
0x00001000
コールバック関数がアプリケーションの独自のインスタンスから XTYP_CONNECT トランザクションを受信できないようにします。 このフラグは、アプリケーションが独自のインスタンスとの DDE 会話を確立できないようにします。 アプリケーションは、それ自体の他のインスタンスと通信する必要があるが、それ自体とは通信しない場合は、このフラグを使用する必要があります。
CBF_SKIP_ALLNOTIFICATIONS
0x003c0000
コールバック関数が通知を受け取らないようにします。 このフラグは、すべてのCBF_SKIP_フラグを組み合わせた場合と同じです。
CBF_SKIP_CONNECT_CONFIRMS
0x00040000
コールバック関数が XTYP_CONNECT_CONFIRM 通知を受信できないようにします。
CBF_SKIP_DISCONNECTS
0x00200000
コールバック関数が XTYP_DISCONNECT 通知を受信できないようにします。
CBF_SKIP_REGISTRATIONS
0x00080000
コールバック関数が XTYP_REGISTER 通知を受信できないようにします。
CBF_SKIP_UNREGISTRATIONS
0x00100000
コールバック関数が XTYP_UNREGISTER 通知を受信できないようにします。
MF_CALLBACKS
0x08000000
トランザクションがシステム内の任意の DDE コールバック関数に送信されるたびに、コールバック関数に通知します。
MF_CONV
0x40000000
会話が確立または終了するたびにコールバック関数に通知します。
MF_ERRORS
0x10000000
DDE エラーが発生するたびにコールバック関数に通知します。
MF_HSZ_INFO
0x01000000
DDE アプリケーションが文字列ハンドルの使用数を作成、解放、またはインクリメントするたびに、または DdeUninitialize 関数の呼び出しの結果として文字列ハンドルが解放されるたびに、コールバック関数に通知します。
MF_LINKS
0x20000000
アドバイズ ループが開始または終了するたびにコールバック関数に通知します。
MF_POSTMSGS
0x04000000
システムまたはアプリケーションが DDE メッセージを投稿するたびにコールバック関数に通知します。
MF_SENDMSGS
0x02000000
システムまたはアプリケーションが DDE メッセージを送信するたびに、コールバック関数に通知します。

ulRes

型: DWORD

予約;は 0 に設定する必要があります。

戻り値

型: UINT

関数が成功した場合、戻り値は DMLERR_NO_ERROR

関数が失敗した場合、戻り値は次のいずれかの値になります。

注釈

DDEML の複数のインスタンスを使用するアプリケーションは、インスタンス間で DDEML オブジェクトを渡してはなりません。

DDE 監視アプリケーションは、同じアプリケーション インスタンスのコンテキスト内で DDE 操作 (会話の確立、トランザクションの発行など) を試行しないでください。

同じタスクのインスタンスに同期トランザクションが既に進行中の場合、同期トランザクションは DMLERR_REENTRANCY エラーで失敗します。

CBF_FAIL_ALLSVRXACTIONS フラグを指定すると、DDEML はすべてのサーバー トランザクションをフィルター処理し、その後の DdeInitialize の呼び出しによって変更できます。 APPCMD_CLIENTONLY フラグは、DDEML がサーバーのキー リソースを作成できないようにし、DdeInitialize の後続の呼び出しでは変更できません。

ANSI バージョンと Unicode バージョンの DdeInitialize があります。 というバージョンによって、DDE 会話 (ANSI または Unicode) の制御に使用されるウィンドウ プロシージャの種類と、CONVCONTEXT 構造体 (CP_WINANSI または CP_WINUNICODE) の iCodePage メンバーの既定値が決まります。

注意

ddeml.h ヘッダーは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして DdeInitialize を定義します。 エンコードに依存しないエイリアスをエンコードニュートラルでないコードと組み合わせて使用すると、コンパイルまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー ddeml.h (Windows.h を含む)
Library User32.lib
[DLL] User32.dll

こちらもご覧ください

動的 Data Exchange 管理ライブラリの概要