共用方式為


登錄巨集

這些宏會定義實用的類型連結庫和登錄設施。

名稱 描述
_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。

備註

在衍生類別中使用 CAtlModuleTDECLARE_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。

備註

在衍生類別中使用 CAtlModuleTDECLARE_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::UpdateRegistryFromResourceDCAtlModule::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::UpdateRegistryFromResourceDCAtlModule::UpdateRegistryFromResourceS,並傳遞數位。 這會將結構中的所有 _ATL_REGMAP_ENTRIES 取代值新增至登錄器取代對應。

如需可取代參數和腳本的詳細資訊,請參閱 ATL 登錄元件(登錄器)一文

另請參閱

巨集