カテゴリ マクロ
これらのマクロではカテゴリ マップを定義します。
マクロ | 説明 |
---|---|
BEGIN_CATEGORY_MAP | カテゴリ マップの先頭にマークを付けます。 |
END_CATEGORY_MAP | カテゴリ マップの末尾にマークを付けます。 |
IMPLEMENTED_CATEGORY | COM オブジェクトによって実装されるカテゴリを示します。 |
REQUIRED_CATEGORY | COM オブジェクトによってコンテナーに求められるカテゴリを示します。 |
要件
ヘッダー: atlcom.h
BEGIN_CATEGORY_MAP
カテゴリ マップの先頭にマークを付けます。
BEGIN_CATEGORY_MAP(theClass)
パラメーター
theClass
[入力] カテゴリ マップを含むクラスの名前。
解説
カテゴリ マップは、COM クラスによって実装されるコンポーネント カテゴリと、そのコンテナーに求められるカテゴリを指定するために使用されます。
COM クラスによって実装される各カテゴリのマップに、IMPLEMENTED_CATEGORY エントリを追加します。 クラスによって、そのクライアントに実装が求められる各カテゴリのマップに、REQUIRED_CATEGORY エントリを追加します。 マップの末尾に END_CATEGORY_MAP マクロのマークを付けます。
クラスに関連付けられている OBJECT_ENTRY_AUTO または OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO がある場合は、モジュールが登録されると、マップに一覧表示されるコンポーネント カテゴリが自動的に登録されます。
Note
ATL では標準のコンポーネント カテゴリ マネージャーを使用して、コンポーネント カテゴリを登録します。 モジュールが登録されているときに、マネージャーがシステムに存在しない場合、登録は成功しますが、そのクラスにはコンポーネント カテゴリが登録されません。
コンポーネント カテゴリの詳細については、Windows SDK のコンポーネント カテゴリとそのしくみに関するページを参照してください。
例
BEGIN_CATEGORY_MAP(CMyCtrl)
IMPLEMENTED_CATEGORY(CATID_Insertable)
END_CATEGORY_MAP()
END_CATEGORY_MAP
カテゴリ マップの末尾にマークを付けます。
END_CATEGORY_MAP()
例
「BEGIN_CATEGORY_MAP」の例を参照してください。
IMPLEMENTED_CATEGORY
コンポーネントのカテゴリ マップに IMPLEMENTED_CATEGORY マクロを追加して、catID パラメーターで識別されるカテゴリの実装として登録する必要があることを指定します。
IMPLEMENTED_CATEGORY(catID)
パラメーター
catID
[入力] 実装されているカテゴリのグローバル一意識別子 (GUID) を保持する CATID 定数または変数。 catID のアドレスが取得され、マップに追加されます。 ストック カテゴリの選択については、以下の表を参照してください。
解説
クラスに関連付けられている OBJECT_ENTRY_AUTO または OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO マクロがある場合は、モジュールが登録されると、マップに一覧表示されるコンポーネント カテゴリが自動的に登録されます。
クライアントでは、クラスに登録されているカテゴリ情報を使用して、そのインスタンスを作成することなく、機能と要件を判断できます。
コンポーネント カテゴリの詳細については、Windows SDK のコンポーネント カテゴリとそのしくみに関するページを参照してください。
ストック カテゴリの選択
説明 | 記号 | レジストリ GUID |
---|---|---|
スクリプトの安全性 | CATID_SafeForScripting | {7DD95801-9882-11CF-9FA9-00AA006C42C4} |
初期化の安全性 | CATID_SafeForInitializing | {7DD95802-9882-11CF-9FA9-00AA006C42C4} |
単純なフレーム サイトでの格納 | CATID_SimpleFrameControl | {157083E0-2368-11cf-87B9-00AA006C8166} |
単純データ バインディング | CATID_PropertyNotifyControl | {157083E1-2368-11cf-87B9-00AA006C8166} |
高度なデータ バインディング | CATID_VBDataBound | {157083E2-2368-11cf-87B9-00AA006C8166} |
ウィンドウなしのコントロール | CATID_WindowlessObject | {1D06B600-3AE3-11cf-87B9-00AA006C8166} |
インターネット対応オブジェクト | サンプル リストについては、Windows SDK の「インターネット対応オブジェクト」を参照してください。 |
例
BEGIN_CATEGORY_MAP(CMyCtrl)
IMPLEMENTED_CATEGORY(CATID_Insertable)
END_CATEGORY_MAP()
REQUIRED_CATEGORY
コンポーネントのカテゴリ マップに REQUIRED_CATEGORY マクロを追加し、catID パラメーターで識別されるカテゴリの要求として登録する必要があることを指定します。
REQUIRED_CATEGORY( catID )
パラメーター
catID
[入力] 必要なカテゴリのグローバル一意識別子 (GUID) を保持する CATID 定数または変数。 catID のアドレスが取得され、マップに追加されます。 ストック カテゴリの選択については、以下の表を参照してください。
解説
クラスに関連付けられている OBJECT_ENTRY_AUTO または OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO マクロがある場合は、モジュールが登録されると、マップに一覧表示されるコンポーネント カテゴリが自動的に登録されます。
クライアントでは、クラスに登録されているカテゴリ情報を使用して、そのインスタンスを作成することなく、機能と要件を判断できます。 たとえば、コントロールによって、コンテナーでデータ バインディングをサポートすることが求められる場合があります。 コンテナーでは、そのコントロールで必要なカテゴリについてカテゴリ マネージャーに対してクエリを実行することで、コントロールをホストするために必要な機能があるかどうかを確認できます。 コンテナーでは、必要な機能をがサポートされていない場合、COM オブジェクトのホストを拒否することができます。
サンプル リストを含むコンポーネント カテゴリの詳細については、Windows SDK のコンポーネント カテゴリとそのしくみに関するページを参照してください。
ストック カテゴリの選択
説明 | 記号 | レジストリ GUID |
---|---|---|
スクリプトの安全性 | CATID_SafeForScripting | {7DD95801-9882-11CF-9FA9-00AA006C42C4} |
初期化の安全性 | CATID_SafeForInitializing | {7DD95802-9882-11CF-9FA9-00AA006C42C4} |
単純なフレーム サイトでの格納 | CATID_SimpleFrameControl | {157083E0-2368-11cf-87B9-00AA006C8166} |
単純データ バインディング | CATID_PropertyNotifyControl | {157083E1-2368-11cf-87B9-00AA006C8166} |
高度なデータ バインディング | CATID_VBDataBound | {157083E2-2368-11cf-87B9-00AA006C8166} |
ウィンドウなしのコントロール | CATID_WindowlessObject | {1D06B600-3AE3-11cf-87B9-00AA006C8166} |
インターネット対応オブジェクト | サンプル リストについては、Windows SDK の「インターネット対応オブジェクト」を参照してください。 |
例
BEGIN_CATEGORY_MAP(CMyWindow)
REQUIRED_CATEGORY(CATID_InternetAware)
END_CATEGORY_MAP()