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 提供帮助程序函数,这些函数可访问许多常用环境属性并在属性不可用时返回适当的默认值。 这些帮助程序函数如下所示:

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

另请参阅

MFC ActiveX 控件