Contrôles ActiveX MFC : ajout de propriétés stock

Les propriétés de stock diffèrent des propriétés personnalisées dans lesquelles elles sont déjà implémentées par la classe COleControl. COleControl contient des fonctions membres prédéfinies qui prennent en charge les propriétés courantes du contrôle. Certaines propriétés courantes incluent les légende du contrôle et les couleurs de premier plan et d’arrière-plan. Pour plus d’informations sur les autres propriétés de stock, consultez Propriétés de stock prises en charge par l’Assistant Ajouter une propriété plus loin dans cet article. Les entrées de mappage de répartition pour les propriétés de stock sont toujours précédées de DISP_STOCKPROP.

Cet article explique comment ajouter une propriété stock (dans ce cas, Caption) à un contrôle ActiveX à l’aide de l’Assistant Ajouter une propriété et explique les modifications de code résultantes. Les sujets abordés sont les suivants :

Utilisation de l’Assistant Ajouter une propriété pour ajouter une propriété stock

L’ajout de propriétés de stock nécessite moins de code que l’ajout de propriétés personnalisées, car la prise en charge de la propriété est gérée automatiquement par COleControl. La procédure suivante illustre l’ajout de la propriété de légende de stock à un framework de contrôle ActiveX et peut également être utilisée pour ajouter d’autres propriétés de stock. Remplacez le nom de la propriété stock sélectionnée par Caption.

Pour ajouter la propriété de légende boursier à l’aide de l’Assistant Ajouter une propriété

  1. Chargez votre projet de contrôle.

  2. Dans l’Affichage de classes, développez le nœud Bibliothèque de votre contrôle.

  3. Cliquez sur le nœud Interface de votre contrôle (le deuxième nœud du nœud Bibliothèque) pour ouvrir le menu contextuel.

  4. Dans le menu contextuel, cliquez sur Ajouter , puis sur Ajouter une propriété.

    L’Assistant Ajouter une propriété s’ouvre.

  5. Dans la zone Nom de la propriété, cliquez sur Légende.

  6. Cliquez sur Terminer.

Ajouter des modifications de l’Assistant Propriété pour les propriétés de stock

Étant donné que COleControl prend en charge les propriétés de stock, l’Assistant Ajouter une propriété ne modifie pas la déclaration de classe de quelque manière que ce soit ; il ajoute la propriété à la carte de répartition. L’Assistant Ajouter une propriété ajoute la ligne suivante à la carte de répartition du contrôle, qui se trouve dans l’implémentation (. Fichier CPP) :

DISP_STOCKPROP_CAPTION()

La ligne suivante est ajoutée à la description de l’interface de votre contrôle (. Fichier IDL) :

[id(DISPID_CAPTION), helpstring("property Caption")] BSTR Caption;

Cette ligne affecte à la propriété Caption un ID spécifique. Notez que la propriété est pouvant être liée et demande l’autorisation de la base de données avant de modifier la valeur.

Cela rend la propriété Caption disponible pour les utilisateurs de votre contrôle. Pour utiliser la valeur d’une propriété stock, accédez à une variable membre ou à une fonction membre de la COleControl classe de base. Pour plus d’informations sur ces variables membres et fonctions membres, consultez la section suivante, Propriétés de stock prises en charge par l’Assistant Ajouter une propriété.

Propriétés stock prises en charge par l’Assistant Ajouter une propriété

La COleControl classe fournit neuf propriétés de stock. Vous pouvez ajouter les propriétés souhaitées à l’aide de l’Assistant Ajouter une propriété.

Propriété Entrée de mappage de répartition Comment accéder à la valeur
Appearance DISP_STOCKPROP_APPEARANCE( ) Valeur accessible en tant que m_sAppearance.
BackColor DISP_STOCKPROP_BACKCOLOR( ) Valeur accessible en appelant GetBackColor.
BorderStyle DISP_STOCKPROP_BORDERSTYLE( ) Valeur accessible en tant que m_sBorderStyle.
Caption DISP_STOCKPROP_CAPTION( ) Valeur accessible en appelant InternalGetText.
Enabled DISP_STOCKPROP_ENABLED( ) Valeur accessible en tant que m_bEnabled.
Font DISP_STOCKPROP_FONT( ) Consultez l’article Contrôles ActiveX MFC : Utilisation de polices pour l’utilisation.
ForeColor DISP_STOCKPROP_FORECOLOR( ) Valeur accessible en appelant GetForeColor.
hWnd DISP_STOCKPROP_HWND( ) Valeur accessible en tant que m_hWnd.
Text DISP_STOCKPROP_TEXT( ) Valeur accessible en appelant InternalGetText. Cette propriété est la même que Caption, à l’exception du nom de la propriété.
ReadyState DISP_STOCKPROP_READYSTATE() Valeur accessible en tant que m_lReadyState ou GetReadyState

Propriétés et notification des actions

La plupart des propriétés stock ont des fonctions de notification qui peuvent être remplacées. Par exemple, chaque fois que la BackColor propriété est modifiée, la OnBackColorChanged fonction (fonction membre de la classe de contrôle) est appelée. L’implémentation par défaut (en COleControl) appelle InvalidateControl. Remplacez cette fonction si vous souhaitez effectuer des actions supplémentaires en réponse à cette situation.

Propriétés de couleur

Vous pouvez utiliser le stock ForeColor et BackColor les propriétés, ou vos propres propriétés de couleur personnalisées, lors de la peinture du contrôle. Pour utiliser une propriété de couleur, appelez la fonction membre COleControl ::TranslateColor . Les paramètres de cette fonction sont la valeur de la propriété de couleur et d’un handle de palette facultatif. La valeur de retour est une valeur COLORREF qui peut être passée aux fonctions GDI, telles que SetTextColor et CreateSolidBrush.

Les valeurs de couleur du stock ForeColor et BackColor des propriétés sont accessibles en appelant respectivement la GetForeColor fonction ou la GetBackColor fonction.

L’exemple suivant illustre l’utilisation de ces deux propriétés de couleur lors de la peinture d’un contrôle. Il initialise une variable COLORREF temporaire et un CBrush objet avec des appels à TranslateColor: l’une utilisant la ForeColor propriété et l’autre à l’aide de la BackColor propriété. Un objet temporaire CBrush est ensuite utilisé pour peindre le rectangle du contrôle et la couleur du texte est définie à l’aide de la ForeColor propriété.

CBrush bkBrush(TranslateColor(GetBackColor()));
COLORREF clrFore = TranslateColor(GetForeColor());
pdc->FillRect(rcBounds, &bkBrush);
pdc->SetTextColor(clrFore);
pdc->DrawText(InternalGetText(), -1, rcBounds, DT_SINGLELINE | DT_CENTER | DT_VCENTER);

Voir aussi

Contrôles ActiveX MFC
Contrôles ActiveX MFC : propriétés
Contrôles ActiveX MFC : méthodes
COleControl, classe