次の方法で共有


BEGIN_OBJECT_MAP

更新 : 2007 年 11 月

BEGIN_OBJECT_MAP マクロは旧式のマクロです。下位互換性のために用意されています。現在の機能については、「OBJECT_ENTRY_AUTO」を参照してください。

ATL COM クラスのインスタンスの登録、初期化、および作成をサポートする、オブジェクト マップの先頭を示します。

BEGIN_OBJECT_MAP( x )

パラメータ

  • x
    [入力] オブジェクト マップ エントリの配列に使用する名前。

解説

パラメータ x は、_ATL_OBJMAP_ENTRY 構造体を保持する配列の名前です。配列の各要素は、COM クラス、およびそのクラスの以下に示す項目に対応する C++ 実装を示します。

  • COM クラスの CLSID

  • クラスの COM 登録コード

  • クラス ファクトリ作成コード

  • インスタンス作成コード

  • コンポーネント カテゴリ登録コード

  • クラス レベルの初期化コードおよびクリーンアップ コード

BEGIN_OBJECT_MAP マクロでオブジェクト マップを開始し、OBJECT_ENTRY マクロを使用してクラスごとにエントリを追加します。追加し終わったら、END_OBJECT_MAP マクロでオブジェクト マップを終了します。通常、ウィザードでオブジェクト マップが作成され、適切なエントリが自動的に追加されますが、このコードを手動で変更することが必要な場合もあります。

提供された情報に、モジュールの登録、初期化、作成の各コードをフックできるようにするには、オブジェクト マップを CComModule::Init に渡す必要があります。

使用例

CIRCCOLL サンプルから引用した次のコード例は、単純なオブジェクト マップ、および DLL サーバーからの CComModule::Init の呼び出しを示します。

BEGIN_OBJECT_MAP(ObjectMap)
   OBJECT_ENTRY(CLSID_MyCircleCollectionCreator, CMyCircleCollectionCreator)
END_OBJECT_MAP( )

//DLL Entry Point
extern "C"
BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID /*lpReserved*/)
{
   if (dwReason == DLL_PROCESS_ATTACH)
   {
      _Module.Init(ObjectMap, hInstance);
      DisableThreadLibraryCalls(hInstance);
   }
   else if (dwReason == DLL_PROCESS_DETACH)
      _Module.Term();
   return TRUE;
}

必要条件

ヘッダー : atlcom.h

参照

参照

旧式の ATL の項目