次の方法で共有


オブジェクト マップに関するマクロ

これらのマクロでは、オブジェクト マップとエントリが定義されます。

名前 説明
DECLARE_OBJECT_DESCRIPTION オブジェクト マップに入力される、クラス オブジェクトのテキストの説明を指定できます。
OBJECT_ENTRY_AUTO ATL オブジェクトがオブジェクト マップに入力され、レジストリが更新され、オブジェクトのインスタンスが作成されます。
OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO オブジェクトを登録して初期化するように指定する一方で、CoCreateInstance を使用してオブジェクトを外部で作成できないように指定できます。

要件

ヘッダー: atlcom.h

DECLARE_OBJECT_DESCRIPTION

クラス オブジェクトのテキストの説明を指定できます。

DECLARE_OBJECT_DESCRIPTION( x )

パラメーター

x
[入力] クラス オブジェクトの説明。

解説

ATL では OBJECT_ENTRY_AUTO を使用してオブジェクト マップにこの説明が入力されます。

DECLARE_OBJECT_DESCRIPTION は、CComCoClass::GetObjectDescription メソッドをオーバーライドするために使用できる GetObjectDescription 関数を実装します。

GetObjectDescription 関数は IComponentRegistrar::GetComponents によって呼び出されます。 IComponentRegistrar は、DLL 内の個々のコンポーネントの登録と登録解除を実行できるようにするオートメーション インターフェイスです。 ATL プロジェクト ウィザードを使用してコンポーネント レジストラー オブジェクトを作成すると、ウィザードによって IComponentRegistrar インターフェイスが自動的に実装されます。 IComponentRegistrar は、通常、Microsoft トランザクション サーバーによって使用されます。

ATL プロジェクト ウィザードの詳細については、「ATL プロジェクトの作成」を参照してください。

class ATL_NO_VTABLE CMyDescribedClass :
   public CComObjectRoot,
   public CComCoClass<CMyDescribedClass, &CLSID_MyDescribedClass>
{
public:
   CMyDescribedClass()
   {
   }

   // Override CComCoClass::GetObjectDescription
   DECLARE_OBJECT_DESCRIPTION("My Described Object 1.0")
};

OBJECT_ENTRY_AUTO

ATL オブジェクトがオブジェクト マップに入力され、レジストリが更新され、オブジェクトのインスタンスが作成されます。

OBJECT_ENTRY_AUTO( clsid, class )

パラメーター

clsid
[入力] classという名前の C++ クラスで実装されている COM クラスの CLSID。

クラス
[入力] clsid で表される COM クラスを実装する C++ クラスの名前。

解説

オブジェクトのエントリ マクロは、クラスの登録、初期化、および作成をサポートするためにプロジェクトのグローバル スコープに配置されます。

OBJECT_ENTRY_AUTO では、このオブジェクトの creator クラスおよび class-factory creator クラスの CreateInstance 関数の関数ポインターが、自動生成された ATL オブジェクト マップに入力されます。 CAtlComModule::RegisterServer が呼び出されると、オブジェクト マップの各オブジェクトのシステム レジストリが更新されます。

次の表は、オブジェクト マップに追加された情報が、このマクロの 2 番目のパラメーターとして指定されたクラスからどのように取得されるかを示しています。

情報 取得元
COM 登録 レジストリに関するマクロ
クラス ファクトリの作成 クラス ファクトリに関するマクロ
インスタンスの作成 集約マクロ
コンポーネント カテゴリの登録 カテゴリに関するマクロ
クラスレベルの初期化とクリーンアップ ObjectMain

OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO

オブジェクトを登録して初期化するように指定する一方で、CoCreateInstance を使用してオブジェクトを外部で作成できないように指定できます。

OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO( clsid, class )

パラメーター

clsid
[入力] classという名前の C++ クラスで実装されている COM クラスの CLSID。

クラス
[入力] clsid で表される COM クラスを実装する C++ クラスの名前。

解説

オブジェクトのエントリ マクロは、クラスの登録、初期化、および作成をサポートするためにプロジェクトのグローバル スコープに配置されます。

OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO を使用すると、オブジェクトを登録して初期化するように指定できます (詳細については、「OBJECT_ENTRY_AUTO」を参照してください) が、CoCreateInstance を使用して作成することはできません。

関連項目

マクロ