分类宏
这些宏定义类别映射。
宏 | 说明 |
---|---|
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()
示例
请参阅有关 EGIN_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} |
Internet-Aware 对象 | 有关示例列表,请参阅 Windows SDK 中的 Internet Aware 对象。 |
示例
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} |
Internet-Aware 对象 | 有关示例列表,请参阅 Windows SDK 中的 Internet Aware 对象。 |
示例
BEGIN_CATEGORY_MAP(CMyWindow)
REQUIRED_CATEGORY(CATID_InternetAware)
END_CATEGORY_MAP()