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