MFC ActiveX 控件:访问环境属性

本文讨论 Activex 控件如何访问其控件容器环境属性。

控件可以通过访问容器的单个属性获取有关其容器的信息。 这些属性公开可视化特征,例如容器的背景色、容器当前使用的字体和运行特征,例如容器是当前在用户模式或设计器模式。 控件可以使用环境属性为其外观和行为定制它嵌入的特定容器。 但是,控件不应假定,其容器将支持任何特定环境属性。 实际上,一些容器也不支持任何环境属性。 如果没有个环境属性时,控件应假定合理的默认值。

访问一个环境属性,仅仅是对 COleControl::GetAmbientProperty。 此函数需要环境属性的调度 ID 作为第一个参数 (文件 OLECTL.H 定义标准的调度 ID 计时环境属性)。

GetAmbientProperty 函数的参数是调度 ID、不同的标记指示预期的属性的类型和指向应返回值的内存。 此指针引用数据的类型根据不同的标记将有所不同。 函数返回 TRUE ,如果容器支持属性,否则返回 FALSE

下面的代码示例获取称为 “UserMode 的单个属性的值”。如果该属性不是容器支持, TRUE 的默认假定:

BOOL bUserMode;
if(!GetAmbientProperty( DISPID_AMBIENT_USERMODE, VT_BOOL, &bUserMode))
   bUserMode = TRUE;

为方便您使用, COleControl 提供访问许多常用的单个属性并返回合适的默认 helper 函数,当属性不可用时。 这些帮助器函数如下所示:

如果一个环境属性的值发生更改 (通过容器的某些操作),控件的 OnAmbientPropertyChanged 成员函数调用。 重写该成员函数处理此类通知。 OnAmbientPropertyChanged 的参数是受影响的环境属性的调度 ID。 此计划 ID 的值可能为 DISPID_UNKNOWN,指示一个或多个环境属性已更改,但是,的信息属性影响不可用。

请参见

概念

MFC ActiveX 控件