登錄巨集
這些宏會定義實用的類型連結庫和登錄設施。
名稱 | 描述 |
---|---|
_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 | 尋找標識碼所識別的資源,並在其中執行登錄腳本。 |
需求
標頭: 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 )
參數
class
[in]包含回溯相容性。
pid
[in]LPCTSTR,這是版本特定的程式識別碼。
vpid
[in]LPCTSTR,這是與版本無關的程式識別碼。
nid
[in]UINT,這是登錄中要用來做為程式描述之資源字串的索引。
flags
[in]包含登錄中程序線程模型的 DWORD。 必須是下列其中一個值:THREADFLAGS_APARTMENT、THREADFLAGS_BOTH或 AUTPRXFLAG。
備註
標準註冊包含 CLSID、程式識別碼、版本無關的程式識別碼、描述字串和線程模型。
當您使用 ATL 新增類別精靈建立物件或控件時,精靈會自動實作腳本型登錄支援,並將DECLARE_REGISTRY_RESOURCEID巨集新增至檔案。 如果您不想要以腳本為基礎的登錄支援,您必須將此巨集取代為 DECLARE_REGISTRY。 DECLARE_REGISTRY只會將上述五個基本密鑰插入登錄中。 您必須手動撰寫程序代碼,才能將其他機碼插入登錄中。
DECLARE_REGISTRY_APPID_RESOURCEID
指定自動註冊 appid 所需的資訊。
DECLARE_REGISTRY_APPID_RESOURCEID(
resid,
appid )
參數
殘油
.rgs 檔案的資源標識符,其中包含appid的相關信息。
appid
GUID。
備註
在衍生類別中使用 CAtlModuleT
DECLARE_REGISTRY_APPID_RESOURCEID。
範例
使用 [新增類別程式代碼精靈] 新增至 ATL 專案的類別,將會有使用此巨集的範例。
DECLARE_REGISTRY_RESOURCE
取得包含登錄檔的具名資源,並執行腳本以將對象輸入系統登錄,或從系統登錄中移除它們。
DECLARE_REGISTRY_RESOURCE( x )
參數
x
[in]資源的字串標識碼。
備註
當您使用 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
與 DECLARE_REGISTRY_RESOURCE 相同,不同之處在於它會使用精靈產生的 UINT 來識別資源,而不是字串名稱。
DECLARE_REGISTRY_RESOURCEID( x )
參數
x
[in]精靈產生的資源標識碼。
備註
當您使用 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 登錄元件(登錄器)一文。