レジストリ マクロ

これらのマクロは、便利なタイプ ライブラリとレジストリ機能を定義します。

名前 説明
_ATL_STATIC_REGISTRY ATL.DLL への依存を回避するために、オブジェクトの登録コードをオブジェクトに含めることを示します。
DECLARE_LIBID ATL がタイプ ライブラリの libid を取得する方法を提供します。
DECLARE_NO_REGISTRY 既定の ATL 登録を回避します。
DECLARE_REGISTRY システム レジストリ内のメイン オブジェクトのエントリを入力または削除します。
DECLARE_REGISTRY_APPID_RESOURCEID appid を自動的に登録するために必要な情報を指定します。
DECLARE_REGISTRY_RESOURCE 名前付きリソースを検索し、その中でレジストリ スクリプトを実行します。
DECLARE_REGISTRY_RESOURCEID ID 番号で識別されたリソースを検索し、その中でレジストリ スクリプトを実行します。

必要条件

ヘッダー: atlcom.h

_ATL_STATIC_REGISTRY

ATL.DLL への依存を回避するために、オブジェクトの登録コードをオブジェクトに含めることを示す記号です。

#define _ATL_STATIC_REGISTRY

解説

ATL_STATIC_REGISTRY を定義する場合は、次のコードを使用する必要があります。

#ifdef _ATL_STATIC_REGISTRY
#include <statreg.h>
#endif

DECLARE_LIBID

ATL がタイプ ライブラリの libid を取得する方法を提供します。

DECLARE_LIBID( libid )

パラメーター

libid
タイプ ライブラリの GUID。

解説

CAtlModuleT 派生クラスで DECLARE_LIBID を使用します。

属性付けされていないウィザードで生成された ATL プロジェクトには、このマクロの使用例があります。

DECLARE_NO_REGISTRY

このマクロが表示されるクラスの既定の ATL 登録を回避する場合は、DECLARE_NO_REGISTRY を使用します。

DECLARE_NO_REGISTRY()

DECLARE_REGISTRY

システム レジストリに標準クラスの登録を入力するか、またはシステム レジストリからこれを削除します。

DECLARE_REGISTRY(
    class,
    pid,
    vpid,
    nid,
    flags )

パラメーター

クラス
[入力] 下位互換性のために含まれています。

pid
[入力] バージョン固有のプログラム識別子である LPCTSTR。

vpid
[入力] バージョンに依存しないプログラム識別子である LPCTSTR。

nid
[入力] プログラムの説明として使用するレジストリ内のリソース文字列のインデックスである UINT。

flags
[入力] レジストリ内のプログラムのスレッド モデルを含むダブルワード。 次のいずれかの値である必要があります: THREADFLAGS_APARTMENT、THREADFLAGS_BOTH、または AUTPRXFLAG。

解説

標準登録は、CLSID、プログラム ID、バージョンに依存しないプログラム ID、説明文字列、スレッド モデルで構成されます。

ATL のクラス追加ウィザードを使用してオブジェクトまたはコントロールを作成すると、ウィザードによってスクリプトベースのレジストリ サポートが自動的に実装され、DECLARE_REGISTRY_RESOURCEID マクロがファイルに追加されます。 スクリプトベースのレジストリ サポートが必要ない場合は、このマクロを DECLARE_REGISTRY と置き換える必要があります。 DECLARE_REGISTRY では、上述されている 5 つの基本キーのみがレジストリに挿入されます。 レジストリに他のキーを挿入するには、コードを手動で記述する必要があります。

DECLARE_REGISTRY_APPID_RESOURCEID

appid を自動的に登録するために必要な情報を指定します。

DECLARE_REGISTRY_APPID_RESOURCEID(
    resid,
    appid )

パラメーター

resid
appid に関する情報を含む .rgs ファイルのリソース ID。

appid
GUID。

解説

CAtlModuleT 派生クラスで DECLARE_REGISTRY_APPID_RESOURCEID を使用します。

クラスの追加コード ウィザードを使用して ATL プロジェクトに追加されたクラスには、このマクロの使用例があります。

DECLARE_REGISTRY_RESOURCE

レジストリ ファイルを含む名前付きリソースを取得し、スクリプトを実行してシステム レジストリにオブジェクトを入力するか、システム レジストリから削除します。

DECLARE_REGISTRY_RESOURCE( x )

パラメーター

x
[入力] リソースの文字列識別子。

解説

ATL プロジェクト ウィザードを使用してオブジェクトまたはコントロールを作成すると、ウィザードによってスクリプト ベースのレジストリ サポートが自動的に実装され、DECLARE_REGISTRY_RESOURCE に似た DECLARE_REGISTRY_RESOURCEID マクロがファイルに追加されます。

レジストリ アクセスを最適化するために、ATL レジストリ コンポーネント (レジストラー) と静的にリンクできます。 レジストラー コードに静的にリンクするには、pch.h ファイル (Visual Studio 2017 以前の stdafx.h) に次の行を追加します。

#define _ATL_STATIC_REGISTRY

ATL により実行時に置換値が代入されるようにする場合は、DECLARE_REGISTRY_RESOURCE または DECLARE_REGISTRY_RESOURCEID マクロを指定しないでください。 代わりに、_ATL_REGMAP_ENTRIES 構造体の配列を作成します。この各エントリには、変数のプレースホルダーと、そのプレースホルダーを実行時に置換する値のペアが含まれています。 次に、CAtlModule::UpdateRegistryFromResourceD または CAtlModule::UpdateRegistryFromResourceS を呼び出し、配列を渡します。 これにより、_ATL_REGMAP_ENTRIES 構造体内のすべての置換値がレジストラーの置換マップに追加されます。

置換可能パラメーターとスクリプト化の詳細については、ATL レジストリ コンポーネント (レジストラー) の記事を参照してください。

DECLARE_REGISTRY_RESOURCEID

文字列名ではなく、ウィザードによって生成された UINT を使用してリソースを識別する点を除いて、DECLARE_REGISTRY_RESOURCE と同じです。

DECLARE_REGISTRY_RESOURCEID( x )

パラメーター

x
[入力] ウィザードによって生成されたリソースの識別子。

解説

ATL プロジェクト ウィザードを使用してオブジェクトまたはコントロールを作成すると、ウィザードによってスクリプトベースのレジストリ サポートが自動的に実装され、DECLARE_REGISTRY_RESOURCEID マクロがファイルに追加されます。

レジストリ アクセスを最適化するために、ATL レジストリ コンポーネント (レジストラー) と静的にリンクできます。 レジストラー コードに静的にリンクするには、stdafx.h ファイル (Visual Studio 2019 以降の pch.h) に次の行を追加します。

#define _ATL_STATIC_REGISTRY

ATL により実行時に置換値が代入されるようにする場合は、DECLARE_REGISTRY_RESOURCE または DECLARE_REGISTRY_RESOURCEID マクロを指定しないでください。 代わりに、_ATL_REGMAP_ENTRIES 構造体の配列を作成します。この各エントリには、変数のプレースホルダーと、そのプレースホルダーを実行時に置換する値のペアが含まれています。 次に、CAtlModule::UpdateRegistryFromResourceD または CAtlModule::UpdateRegistryFromResourceS を呼び出し、配列を渡します。 これにより、_ATL_REGMAP_ENTRIES 構造体内のすべての置換値がレジストラーの置換マップに追加されます。

置換可能パラメーターとスクリプト化の詳細については、ATL レジストリ コンポーネント (レジストラー) の記事を参照してください。

関連項目

マクロ