次の方法で共有


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

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

注釈

これらの Windows SDK トピックを読む場合、MFC アクティブ化コンテキスト メカニズムは Windows SDK アクティブ化コンテキストに似ていますが、MFC では Windows SDK アクティブ化コンテキスト API が使用されないことに注意してください。

アクティブ化コンテキストは、MFC アプリケーション、ユーザー DLL、および MFC 拡張 DLL で次の方法で機能します。

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

  • MFC ユーザー DLL は、マニフェスト リソースにリソース ID 2 を使用します。 ここでは、MFC はユーザー DLL ごとにアクティブ化コンテキストを作成するため、異なるユーザー DLL で同じライブラリの異なるバージョン (Common Controls ライブラリなど) を使用できます。

  • MFC 拡張 DLL は、ホスト アプリケーションまたはユーザー DLL に依存してアクティブ化コンテキストを確立します。

アクティブ化コンテキストの状態は、 アクティブ化コンテキスト API の使用に関するページで説明されているプロセスを使用して変更できますが、MFC アクティブ化コンテキスト メカニズムを使用すると、外部プラグインへの個々の呼び出しの前後にアクティブ化状態を手動で切り替えるのが容易ではない (または不可能な) DLL ベースのプラグイン アーキテクチャを開発する場合に便利です。

アクティブ化コンテキストは AfxWinInit に作成されます。 AFX_MODULE_STATEデストラクターで破棄されます。 アクティブ化コンテキスト ハンドルは AFX_MODULE_STATEに保持されます。 (AFX_MODULE_STATEAfxGetStaticModuleState で説明されています)。

AFX_MANAGE_STATE マクロは、アクティブ化コンテキストをアクティブ化および非アクティブ化します。 AFX_MANAGE_STATE は、静的 MFC ライブラリと MFC DLL に対して有効になっており、ユーザー DLL によって選択された適切なアクティブ化コンテキストで MFC コードを実行できます。

こちらも参照ください

アクティブ化コンテキスト
アプリケーション マニフェスト
アセンブリ マニフェスト
AfxWinInit
AfxGetStaticModuleState
AFX_MANAGE_STATE