共用方式為


登錄巨集

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

名稱 描述
_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 登錄元件(登錄器) 一文

另請參閱

巨集