レジストリ マクロ
これらのマクロは、便利なタイプ ライブラリとレジストリ機能を定義します。
名前 | 説明 |
---|---|
_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 レジストリ コンポーネント (レジストラー) の記事を参照してください。