本文讨论 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
提供访问许多常用环境属性的帮助程序函数,并在属性不可用时返回适当的默认值。 这些帮助程序函数如下所示:
-
注释
调用方必须调用
Release( )
返回的字体。
如果环境属性的值发生更改(通过容器的某些作), OnAmbientPropertyChanged
则调用控件的成员函数。 重写此成员函数以处理此类通知。 其参数 OnAmbientPropertyChanged
是受影响环境属性的调度 ID。 此调度 ID 的值可能DISPID_UNKNOWN,指示一个或多个环境属性已更改,但有关哪些属性受到影响的信息不可用。