分類巨集
這些巨集會定義類別對應。
Macro | 描述 |
---|---|
BEGIN_CATEGORY_MAP | 標記類別目錄對應的開頭。 |
END_CATEGORY_MAP | 標記類別目錄對應的結尾。 |
IMPLEMENTED_CATEGORY | 指出 COM 物件所實作的類別。 |
REQUIRED_CATEGORY | 指出 COM 物件所需的容器類別。 |
需求
標頭: atlcom.h
BEGIN_CATEGORY_MAP
標記類別目錄對應的開頭。
BEGIN_CATEGORY_MAP(theClass)
參數
theClass
[in]包含類別對應之類別的名稱。
備註
類別對應是用來指定 COM 類別將實作哪些元件類別,以及其容器所需的類別。
將IMPLEMENTED_CATEGORY專案新增至 COM 類別所實作之每個類別的對應。 針對類別需要其用戶端實作的每個類別,將REQUIRED_CATEGORY專案新增至對應。 使用 END_CATEGORY_MAP 巨集標記地圖的結尾。
如果類別具有相關聯的 OBJECT_ENTRY_AUTO 或 OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO,則會在註冊模組時,自動註冊對應中所列的元件類別。
注意
ATL 會使用標準元件類別管理員來註冊元件類別。 如果註冊模組時系統沒有管理員,註冊就會成功,但元件類別不會註冊該類別。
如需元件類別的詳細資訊,請參閱 什麼是元件類別,以及如何在 Windows SDK 中運作 。
範例
BEGIN_CATEGORY_MAP(CMyCtrl)
IMPLEMENTED_CATEGORY(CATID_Insertable)
END_CATEGORY_MAP()
END_CATEGORY_MAP
標記類別目錄對應的結尾。
END_CATEGORY_MAP()
範例
請參閱BEGIN_CATEGORY_MAP範例。
IMPLEMENTED_CATEGORY
將IMPLEMENTED_CATEGORY巨集新增至元件的類別對應,以指定它應該註冊為實作 catID 參數所識別的類別。
IMPLEMENTED_CATEGORY(catID)
參數
catID
[in]包含實作類別之全域唯一標識碼 (GUID) 的 CATID 常數或變數。 catID 的位址將採用並新增至地圖。 如需股票類別的選取專案,請參閱下表。
備註
如果類別具有相關聯的 OBJECT_ENTRY_AUTO 或 OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO 巨集,則當模塊註冊時,對應中所列的元件類別會自動註冊。
用戶端可以使用為 類別註冊的類別資訊來判斷其功能和需求,而不需要建立它的實例。
如需元件類別的詳細資訊,請參閱 什麼是元件類別,以及如何在 Windows SDK 中運作 。
股票類別的選取專案
描述 | 符號 | 登錄 GUID |
---|---|---|
適用於腳本的安全 | CATID_SafeForScripting | {7DD95801-9882-11CF-9FA9-00AA006C42C4} |
適用於初始化的安全 | CATID_SafeForInitializing | {7DD95802-9882-11CF-9FA9-00AA006C42C4} |
簡單框架網站內含專案 | CATID_SimpleFrameControl | {157083E0-2368-11cf-87B9-00AA006C8166} |
簡單資料繫結 | CATID_PropertyNotifyControl | {157083E1-2368-11cf-87B9-00AA006C8166} |
進階數據系結 | CATID_VBDataBound | {157083E2-2368-11cf-87B9-00AA006C8166} |
無視窗控制項 | CATID_WindowlessObject | {1D06B600-3AE3-11cf-87B9-00AA006C8166} |
因特網感知物件 | 如需範例清單,請參閱 Windows SDK 中的因特網感知物件 。 |
範例
BEGIN_CATEGORY_MAP(CMyCtrl)
IMPLEMENTED_CATEGORY(CATID_Insertable)
END_CATEGORY_MAP()
REQUIRED_CATEGORY
將REQUIRED_CATEGORY巨集新增至元件的類別對應,以指定它應該註冊為需要 catID 參數識別的類別。
REQUIRED_CATEGORY( catID )
參數
catID
[in]包含必要類別之全域唯一標識碼 (GUID) 的 CATID 常數或變數。 catID 的位址將採用並新增至地圖。 如需股票類別的選取專案,請參閱下表。
備註
如果類別具有相關聯的 OBJECT_ENTRY_AUTO 或 OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO 巨集,則當模塊註冊時,對應中所列的元件類別會自動註冊。
用戶端可以使用為 類別註冊的類別資訊來判斷其功能和需求,而不需要建立它的實例。 例如,控件可能需要容器支持數據系結。 容器可藉由查詢該控件所需的類別管理員,找出它是否有裝載控件所需的功能。 如果容器不支援必要的功能,它可以拒絕裝載 COM 物件。
如需元件類別的詳細資訊,包括範例清單,請參閱 什麼是元件類別,以及如何在 Windows SDK 中運作 。
股票類別的選取專案
描述 | 符號 | 登錄 GUID |
---|---|---|
適用於腳本的安全 | CATID_SafeForScripting | {7DD95801-9882-11CF-9FA9-00AA006C42C4} |
適用於初始化的安全 | CATID_SafeForInitializing | {7DD95802-9882-11CF-9FA9-00AA006C42C4} |
簡單框架網站內含專案 | CATID_SimpleFrameControl | {157083E0-2368-11cf-87B9-00AA006C8166} |
簡單資料繫結 | CATID_PropertyNotifyControl | {157083E1-2368-11cf-87B9-00AA006C8166} |
進階數據系結 | CATID_VBDataBound | {157083E2-2368-11cf-87B9-00AA006C8166} |
無視窗控制項 | CATID_WindowlessObject | {1D06B600-3AE3-11cf-87B9-00AA006C8166} |
因特網感知物件 | 如需範例清單,請參閱 Windows SDK 中的因特網感知物件 。 |
範例
BEGIN_CATEGORY_MAP(CMyWindow)
REQUIRED_CATEGORY(CATID_InternetAware)
END_CATEGORY_MAP()