Contrôles ActiveX MFC : accès aux propriétés ambiantes

Cet article explique comment un contrôle ActiveX peut accéder aux propriétés ambiantes de son conteneur de contrôle.

Un contrôle peut obtenir des informations sur son conteneur en accédant aux propriétés ambiantes du conteneur. Ces propriétés présentent des caractéristiques visuelles, telles que la couleur d'arrière-plan du conteneur, la police actuelle utilisée par le conteneur, et des caractéristiques opérationnelles, par exemple si le conteneur est actuellement en mode utilisateur ou en mode concepteur. Un contrôle peut utiliser les propriétés ambiantes pour adapter son apparence et son comportement au conteneur particulier dans lequel il est incorporé. Toutefois, un contrôle ne doit jamais supposer que son conteneur prend en charge une propriété ambiante particulière. En fait, certains conteneurs peuvent ne pas prendre en charge les propriétés ambiantes du tout. En l'absence d'une propriété ambiante, un contrôle doit utiliser une valeur par défaut raisonnable.

Pour accéder à une propriété ambiante, appelez COleControl ::GetAmbientProperty. Cette fonction attend l'ID de dispatch de la propriété ambiante en tant que premier paramètre (le fichier OLECTL.H définit les ID de dispatch pour l'ensemble standard de propriétés ambiantes).

Les paramètres de la fonction GetAmbientProperty sont l’ID de dispatch, une étiquette de variante indiquant le type de propriété attendu et un pointeur vers la mémoire dans laquelle la valeur doit être retournée. Le type de données auxquelles ce pointeur fait référence varie selon la balise de variante. La fonction retourne TRUE si le conteneur prend en charge la propriété, sinon elle retourne FALSE.

L’exemple de code suivant obtient la valeur de la propriété ambiante appelée « UserMode ». Si la propriété n’est pas prise en charge par le conteneur, une valeur par défaut de TRUE est supposée :

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

Pour plus de commodité, COleControl fournit des fonctions d'assistance qui accèdent à plusieurs des propriétés ambiantes couramment utilisées et retourne les valeurs par défaut appropriées lorsque les propriétés ne sont pas disponibles. Ces fonctions d'assistance sont les suivantes :

Si la valeur d’une propriété ambiante change (par le biais d’une action du conteneur), la OnAmbientPropertyChanged fonction membre du contrôle est appelée. Remplacez cette fonction membre pour traiter cette notification. Le paramètre pour lequel OnAmbientPropertyChanged il s’agit de l’ID de répartition de la propriété ambiante affectée. La valeur de cet ID de répartition peut être DISPID_UNKNOWN, ce qui indique qu’une ou plusieurs propriétés ambiantes ont changé, mais les informations sur les propriétés affectées ne sont pas disponibles.

Voir aussi

Contrôles ActiveX MFC