Partage via


Macros de mappage de propriétés

Ces macros définissent des mappages de propriétés et des entrées.

Nom Description
BEGIN_PROP_MAP Marque le début du mappage de propriétés ATL.
PROP_DATA_ENTRY Indique l’étendue ou les dimensions d’un contrôle ActiveX.
PROP_ENTRY_TYPE Entre une description de propriété, une propriété DISPID et une page de propriétés CLSID dans la carte de propriétés.
PROP_ENTRY_TYPE_EX Entre une description de propriété, une propriété DISPID, une page de propriétés CLSID et IDispatch un IID dans la carte de propriétés.
PROP_PAGE Entre une page de propriétés CLSID dans la carte de propriétés.
END_PROP_MAP Marque la fin du mappage de propriétés ATL.

Spécifications

En-tête : atlcom.h

BEGIN_PROP_MAP

Marque le début du mappage de propriétés de l’objet.

BEGIN_PROP_MAP(theClass)

Paramètres

theClass
[in] Spécifie la classe contenant le mappage de propriétés.

Notes

La carte de propriétés stocke les descriptions des propriétés, les DISPID de propriété, les CLSID de page de propriétés et IDispatch les ID IID. Les classes IPerPropertyBrowsingImpl, IPersistPropertyBagImpl, IPersistStreamInitImpl et ISpecifyPropertyPagesImpl utilisent la carte de propriétés pour récupérer et définir ces informations.

Lorsque vous créez un objet avec l’Assistant Projet ATL, l’Assistant crée un mappage de propriétés vide en spécifiant BEGIN_PROP_MAP suivi de END_PROP_MAP.

BEGIN_PROP_MAP n’enregistre pas l’étendue (c’est-à-dire les dimensions) d’un mappage de propriétés, car un objet utilisant un mappage de propriétés peut ne pas avoir d’interface utilisateur, de sorte qu’il n’aurait aucune étendue. Si l’objet est un contrôle ActiveX avec une interface utilisateur, il a une étendue. Dans ce cas, vous devez spécifier PROP_DATA_ENTRY dans votre carte de propriétés pour fournir l’étendue.

Exemple

BEGIN_PROP_MAP(CMyPropCtrl)
   PROP_DATA_ENTRY("_cx", m_sizeExtent.cx, VT_UI4)
   PROP_DATA_ENTRY("_cy", m_sizeExtent.cy, VT_UI4)
   PROP_ENTRY_TYPE("Property1", 1, CLSID_MyPropPage1, VT_BSTR)
   PROP_ENTRY_TYPE_EX("Caption", DISPID_CAPTION, CLSID_MyPropPage2, IID_IMyDual1, VT_BSTR)
   PROP_ENTRY_INTERFACE_CALLBACK("CorrectParamCallback", 0, CLSID_MyPropPage1, AllowedCLSID, VT_DISPATCH)
   PROP_ENTRY_INTERFACE_CALLBACK_EX("CorrectParamCallbackEx", 1, IID_IMyDual1, CLSID_MyPropPage2, AllowedCLSID, VT_UNKNOWN)
   PROP_PAGE(CLSID_MyPropPage3)
END_PROP_MAP()

PROP_DATA_ENTRY

Indique l’étendue ou les dimensions d’un contrôle ActiveX.

PROP_DATA_ENTRY( szDesc, member, vt)

Paramètres

szDesc
[in] Description de la propriété.

member
[in] Membre de données contenant l’étendue ; par exemple, m_sizeExtent.

vt
[in] Spécifie le type VARIANT de la propriété.

Notes

Cette macro entraîne la persistance du membre de données spécifié.

Lorsque vous créez un contrôle ActiveX, l’Assistant insère cette macro après la macro de mappage de propriétés BEGIN_PROP_MAP et avant la macro de mappage de propriétés END_PROP_MAP.

Exemple

Dans l’exemple suivant, l’étendue de l’objet (m_sizeExtent) est conservée.

BEGIN_PROP_MAP(CMyWindow)
   PROP_DATA_ENTRY("_cx", m_sizeExtent.cx, VT_UI4)
   PROP_DATA_ENTRY("_cy", m_sizeExtent.cy, VT_UI4)
END_PROP_MAP()

 

BEGIN_PROP_MAP(CMyCompositeCtrl)
   PROP_DATA_ENTRY("Width", m_nWidth, VT_UI4)
   PROP_DATA_ENTRY("Height", m_nHeight, VT_UI4)
END_PROP_MAP()

PROP_ENTRY_TYPE

Utilisez cette macro pour entrer une description de propriété, une propriété DISPID et une page de propriétés CLSID dans la carte de propriétés de l’objet.

PROP_ENTRY_TYPE( szDesc, dispid, clsid, vt)

Paramètres

szDesc
[in] Description de la propriété.

dispid
[in] DISPID de la propriété.

Clsid
[in] CLSID de la page de propriétés associée. Utilisez la valeur spéciale CLSID_NULL pour une propriété qui n’a pas de page de propriétés associée.

vt
[in] Type de la propriété.

Notes

La macro PROP_ENTRY était non sécurisée et déconseillée. Elle a été remplacée par PROP_ENTRY_TYPE.

La macro BEGIN_PROP_MAP marque le début du mappage de propriétés ; la macro END_PROP_MAP marque la fin.

Exemple

Consultez l’exemple de BEGIN_PROP_MAP.

PROP_ENTRY_TYPE_EX

Similaire à PROP_ENTRY_TYPE, mais vous permet de spécifier un IID particulier si votre objet prend en charge plusieurs interfaces doubles.

PROP_ENTRY_TYPE_EX( szDesc, dispid, clsid, iidDispatch, vt)

Paramètres

szDesc
[in] Description de la propriété.

dispid
[in] DISPID de la propriété.

Clsid
[in] CLSID de la page de propriétés associée. Utilisez la valeur spéciale CLSID_NULL pour une propriété qui n’a pas de page de propriétés associée.

iidDispatch
[in] IID de l’interface double définissant la propriété.

vt
[in] Type de la propriété.

Notes

La macro PROP_ENTRY_EX était non sécurisée et déconseillée. Elle a été remplacée par PROP_ENTRY_TYPE_EX.

La macro BEGIN_PROP_MAP marque le début du mappage de propriétés ; la macro END_PROP_MAP marque la fin.

Exemple

L’exemple suivant regroupe les entrées pour IMyDual1 suivies d’une entrée pour IMyDual2. Le regroupement par interface double améliore les performances.

BEGIN_PROP_MAP(CAtlEdit)
   PROP_ENTRY_TYPE_EX("Caption", DISPID_CAPTION, CLSID_MyPropPage2, IID_IMyDual1, VT_BSTR)
   PROP_ENTRY_TYPE_EX("Enabled", DISPID_ENABLED, CLSID_MyPropPage2, IID_IMyDual1, VT_BOOL)
   PROP_ENTRY_TYPE_EX("Width", DISPID_DRAWWIDTH, CLSID_MyPropPage2, IID_IMyDual2, VT_UINT)
END_PROP_MAP()

PROP_PAGE

Utilisez cette macro pour entrer un CLSID de page de propriétés dans la carte de propriétés de l’objet.

PROP_PAGE(clsid)

Paramètres

Clsid
[in] CLSID d’une page de propriétés.

Notes

PROP_PAGE est similaire à PROP_ENTRY_TYPE, mais ne nécessite pas de description de propriété ou DISPID.

Remarque

Si vous avez déjà entré un CLSID avec PROP_ENTRY_TYPE ou PROP_ENTRY_TYPE_EX, vous n’avez pas besoin d’effectuer une entrée supplémentaire avec PROP_PAGE.

La macro BEGIN_PROP_MAP marque le début du mappage de propriétés ; la macro END_PROP_MAP marque la fin.

Exemple

BEGIN_PROP_MAP(CMyCtrl)
   OtherPropMapEntries
   PROP_PAGE(CLSID_DatePage)
   PROP_PAGE(CLSID_StockColorPage)
END_PROP_MAP()

END_PROP_MAP

Marque la fin du mappage de propriétés de l’objet.

END_PROP_MAP()

Notes

Lorsque vous créez un objet avec l’Assistant Projet ATL, l’Assistant crée un mappage de propriétés vide en spécifiant BEGIN_PROP_MAP suivi de END_PROP_MAP.

Exemple

Consultez l’exemple de BEGIN_PROP_MAP.

Voir aussi

Macros