次の方法で共有


AFX_MANAGE_STATE

更新 : 2007 年 11 月

DLL のエクスポートされた関数を保護します。

AFX_MANAGE_STATE(AFX_MODULE_STATE* pModuleState )

パラメータ

  • pModuleState
    AFX_MODULE_STATE 構造体へのポインタ。

解説

このマクロが起動されると、pModuleState は直接保持しているスコープにとどまる限り有効なモジュール状態になっています。スコープから離れると、直前の有効なモジュール状態に自動的に戻ります。

AFX_MODULE_STATE 構造体にはモジュールのグローバル データ、つまり、モジュール状態のうちプッシュまたはポップされた部分が含まれます。

既定では、MFC はメイン アプリケーションのリソース ハンドルを使用して、リソース テンプレートを読み込みます。DLL でダイアログ ボックスを起動する場合など、DLL 内にエクスポートされた関数がある場合、このテンプレートは実際には DLL モジュールに保存されます。適切なハンドルを使用するには、モジュール状態を切り替える必要があります。関数のはじめに以下のコードを追加することによって、切り替えを実行できます。

AFX_MANAGE_STATE(AfxGetStaticModuleState( ));

これにより、現在のスコープが終わるまで、現在のモジュールの状態と AfxGetStaticModuleState から返された状態が入れ替わります。

モジュール状態と MFC の詳細については、「MFC の一般的なトピック」の「MFC モジュールの状態データの管理」と「テクニカル ノート 58: MFC のモジュール状態の実装」を参照してください。

ba9d5yh5.alert_note(ja-jp,VS.90).gifメモ :

MFC でアセンブリのアクティベーション コンテキストを作成する場合、AfxWinInit を使用してコンテキストを作成し、AFX_MANAGE_STATE を使用してそのコンテキストをアクティブ化または非アクティブ化します。Visual C++ 2005 の時点で、AFX_MANAGE_STATE の動作は変更され、ユーザー DLL によって選択された適切なアクティベーション コンテキストで MFC コードを実行できるように、MFC DLL だけでなく静的な MFC ライブラリに対しても有効になっていることにも注意してください。詳細については、「MFC モジュール状態でのアクティベーション コンテキストのサポート」を参照してください。

必要条件

ヘッダー : afxstat_.h

参照

概念

MFC マクロとグローバル

参照

AfxGetStaticModuleState