次の方法で共有


MFC モジュール状態でのアクティベーション コンテキストのサポート

MFC は、ユーザー モジュールによって提供されるマニフェスト リソースを使用してアクティベーション コンテキストを作成します。 アクティベーション コンテキストが作成される方法の詳細については、次のトピックを参照してください。

解説

これらの Windows SDK に関するトピックを読む際、MFC アクティベーション コンテキストのメカニズムは Windows SDK のアクティベーション コンテキストとほぼ同じですが、MFC は Windows SDK のアクティベーション コンテキスト API を使用しないということに注意してください。

MFC のアプリケーション、ユーザー DLL、および拡張 DLL で、アクティベーション コンテキストは次のように動作します。

  • MFC アプリケーションは、自身のマニフェスト リソースに対してリソース ID 1 を使用します。 この場合、MFC は独自のアクティベーション コンテキストは作成せず、既定のアプリケーション コンテキストを使用します。

  • MFC ユーザー DLL は、自身のマニフェスト リソースに対してリソース ID 2 を使用します。 ここでは、MFC は各ユーザー DLL に対してアクティベーション コンテキストを作成するので、ユーザー DLL ごとに、同じライブラリ (たとえば、コモン コントロール ライブラリ) の別のバージョンを使用できます。

  • MFC 拡張子 DLL は、アクティベーション コンテキストを作成するのに、ホストのアプリケーションまたはユーザー DLL に依存します。

アクティベーション コンテキストの状態は、「Using the Activation Context API」に記述されている手順に従って変更することもできますが、MFC アクティベーション コンテキストのメカニズムは、外部プラグイン呼び出しの前後にアクティベーション状態を手動で切り替えるのが困難 (または不可能) な、DLL ベースのプラグイン アーキテクチャを開発するのに向いています。

アクティベーション コンテキストは AfxWinInit で作成されます。 破棄は AFX_MODULE_STATE デストラクターで行われます。 アクティベーション コンテキスト ハンドルは AFX_MODULE_STATE 内に保持されます (AFX_MODULE_STATE については AfxGetStaticModuleState に解説されています)。

AFX_MANAGE_STATE マクロが、アクティベーション コンテキストをアクティブにしたり非アクティブにしたりします。 AFX_MANAGE_STATEMFC のスタティック ライブラリと MFC Dll、ユーザー DLL によって選択された適切なアクティブ化のコンテキストで実行する MFC コードが有効になります。

参照

参照

Activation Contexts

Application Manifests

Assembly Manifests

AfxWinInit

AfxGetStaticModuleState

AFX_MANAGE_STATE