Partager via


Persistance des contrôles OLE

L’une des fonctionnalités des contrôles OLE est la persistance des propriétés (ou la sérialisation), ce qui permet au contrôle OLE de lire ou d’écrire des valeurs de propriété à partir d’un fichier ou d’un flux. Une application conteneur peut utiliser la sérialisation pour stocker les valeurs de propriété d’un contrôle même après la destruction du contrôle par l’application. Les valeurs de propriété du contrôle OLE peuvent ensuite être lues à partir du fichier ou du flux lorsqu’une nouvelle instance du contrôle est créée ultérieurement.

Persistance des contrôles OLE

Nom Description
PX_Blob Échange une propriété de contrôle qui stocke les données blob (binary large object).
PX_Bool Échange une propriété de contrôle de type BOOL.
PX_Color Échange une propriété de couleur d’un contrôle.
PX_Currency Échange une propriété de contrôle de type CY.
PX_DataPath Échange une propriété de contrôle de type CDataPathProperty.
PX_Double Échange une propriété de contrôle de type double.
PX_Font Échange une propriété de police d’un contrôle.
PX_Float Échange une propriété de contrôle de type float.
PX_IUnknown Échange une propriété de contrôle de type non défini.
PX_Long Échange une propriété de contrôle de type long.
PX_Picture Échange une propriété image d’un contrôle.
PX_Short Échange une propriété de contrôle de type short.
PX_ULong Échange une propriété de contrôle de type ULONG.
PX_UShort Échange une propriété de contrôle de type USHORT.
PXstring Échange une propriété de contrôle de chaîne de caractères.
PX_VBXFontConvert Échange les propriétés liées à la police d’un contrôle VBX dans une propriété de police de contrôle OLE.

En outre, la AfxOleTypeMatchGuid fonction globale est fournie pour tester une correspondance entre un TYPEDESC et un GUID donné.

PX_Blob

Appelez cette fonction dans la fonction membre de DoPropExchange votre contrôle pour sérialiser ou initialiser une propriété qui stocke les données blob (binary large object).

BOOL PX_Blob(
    CPropExchange* pPX,
    LPCTSTR pszPropName,
    HGLOBAL& hBlob,
    HGLOBAL hBlobDefault = NULL);

Paramètres

pPX
Pointeur vers l’objet CPropExchange (généralement passé en tant que paramètre à DoPropExchange).

pszPropName
Nom de la propriété en cours d’échange.

hBlob
Référence à la variable où la propriété est stockée (généralement une variable membre de votre classe).

hBlobDefault
Valeur par défaut de la propriété.

Valeur de retour

Différent de zéro si l’échange a réussi ; 0 en cas d’échec.

Notes

La valeur de la propriété est lue ou écrite dans la variable référencée par hBlob, le cas échéant. Cette variable doit être initialisée sur NULL avant d’appeler PX_Blob initialement pour la première fois (généralement, cela peut être effectué dans le constructeur du contrôle). Si hBlobDefault est spécifié, il sera utilisé comme valeur par défaut de la propriété. Cette valeur est utilisée si, pour une raison quelconque, le processus d’initialisation ou de sérialisation du contrôle échoue.

Les handles hBlob et hBlobDefault font référence à un bloc de mémoire qui contient les éléments suivants :

  • DWORD qui contient la longueur, en octets, des données binaires qui suivent, suivies immédiatement par

  • Bloc de mémoire contenant les données binaires réelles.

Notez que PX_Blob l’allocation de mémoire, à l’aide de l’API Windows GlobalAlloc , lors du chargement des propriétés de type BLOB. Vous êtes responsable de la libération de cette mémoire. Par conséquent, le destructeur de votre contrôle doit appeler GlobalFree sur tous les handles de propriété de type BLOB pour libérer toute mémoire allouée à votre contrôle.

PX_Bool

Appelez cette fonction dans la fonction membre de DoPropExchange votre contrôle pour sérialiser ou initialiser une propriété de type BOOL.

BOOL PX_Bool(
    CPropExchange* pPX,
    LPCTSTR pszPropName,
    BOOL& bValue);

BOOL PX_Bool(
    CPropExchange* pPX,
    LPCTSTR pszPropName,
    BOOL& bValue,
    BOOL bDefault);

Paramètres

pPX
Pointeur vers l’objet CPropExchange (généralement passé en tant que paramètre à DoPropExchange).

pszPropName
Nom de la propriété en cours d’échange.

bValue
Référence à la variable où la propriété est stockée (généralement une variable membre de votre classe).

bDefault
Valeur par défaut de la propriété.

Valeur de retour

Différent de zéro si l’échange a réussi ; 0 en cas d’échec.

Notes

La valeur de la propriété est lue ou écrite dans la variable référencée par bValue, le cas échéant. Si bDefault est spécifié, il sera utilisé comme valeur par défaut de la propriété. Cette valeur est utilisée si, pour une raison quelconque, le processus de sérialisation du contrôle échoue.

PX_Color

Appelez cette fonction dans la fonction membre de DoPropExchange votre contrôle pour sérialiser ou initialiser une propriété de type OLE_COLOR.

BOOL PX_Color(
    CPropExchange* pPX,
    LPCTSTR pszPropName,
    OLE_COLOR& clrValue);

BOOL PX_Color(
    CPropExchange* pPX,
    LPCTSTR pszPropName,
    OLE_COLOR& clrValue,
    OLE_COLOR clrDefault);

Paramètres

pPX
Pointeur vers l’objet CPropExchange (généralement passé en tant que paramètre à DoPropExchange).

pszPropName
Nom de la propriété en cours d’échange.

clrValue
Référence à la variable où la propriété est stockée (généralement une variable membre de votre classe).

clrDefault
Valeur par défaut de la propriété, telle que définie par le développeur du contrôle.

Valeur de retour

Différent de zéro si l’échange a réussi ; 0 en cas d’échec.

Notes

La valeur de la propriété est lue ou écrite dans la variable référencée par clrValue, le cas échéant. Si clrDefault est spécifié, il sera utilisé comme valeur par défaut de la propriété. Cette valeur est utilisée si, pour une raison quelconque, le processus de sérialisation du contrôle échoue.

PX_Currency

Appelez cette fonction dans la fonction membre de DoPropExchange votre contrôle pour sérialiser ou initialiser une propriété de type devise.

BOOL PX_Currency(
    CPropExchange* pPX,
    LPCTSTR pszPropName,
    CY& cyValue);

BOOL PX_Currency(
    CPropExchange* pPX,
    LPCTSTR pszPropName,
    CY& cyValue,
    CY cyDefault);

Paramètres

pPX
Pointeur vers l’objet CPropExchange (généralement passé en tant que paramètre à DoPropExchange).

pszPropName
Nom de la propriété en cours d’échange.

cyValue
Référence à la variable où la propriété est stockée (généralement une variable membre de votre classe).

cyDefault
Valeur par défaut de la propriété.

Valeur de retour

Différent de zéro si l’échange a réussi ; 0 en cas d’échec.

Notes

La valeur de la propriété est lue ou écrite dans la variable référencée par cyValue, le cas échéant. Si cyDefault est spécifié, il sera utilisé comme valeur par défaut de la propriété. Cette valeur est utilisée si, pour une raison quelconque, le processus de sérialisation du contrôle échoue.

PX_DataPath

Appelez cette fonction dans la fonction membre de DoPropExchange votre contrôle pour sérialiser ou initialiser une propriété de chemin d’accès aux données de type CDataPathProperty.

BOOL PX_DataPath(
    CPropExchange* pPX,
    LPCTSTR pszPropName,
    CDataPathProperty& dataPathProperty);

BOOL PX_DataPath(
    CPropExchange* pPX,
    CDataPathProperty& dataPathProperty);

Paramètres

pPX
Pointeur vers l’objet CPropExchange (généralement passé en tant que paramètre à DoPropExchange).

pszPropName
Nom de la propriété en cours d’échange.

dataPathProperty
Référence à la variable où la propriété est stockée (généralement une variable membre de votre classe).

Valeur de retour

Différent de zéro si l’échange a réussi ; 0 en cas d’échec.

Notes

Les propriétés du chemin d’accès aux données implémentent des propriétés de contrôle asynchrones. La valeur de la propriété est lue ou écrite dans la variable référencée par dataPathProperty, le cas échéant.

PX_Double

Appelez cette fonction dans la fonction membre de DoPropExchange votre contrôle pour sérialiser ou initialiser une propriété de type double.

BOOL PX_Double(
    CPropExchange* pPX,
    LPCTSTR pszPropName,
    double& doubleValue);

BOOL PX_Double(
    CPropExchange* pPX,
    LPCTSTR pszPropName,
    double& doubleValue,
    double doubleDefault);

Paramètres

pPX
Pointeur vers l’objet CPropExchange (généralement passé en tant que paramètre à DoPropExchange).

pszPropName
Nom de la propriété en cours d’échange.

doubleValue
Référence à la variable où la propriété est stockée (généralement une variable membre de votre classe).

doubleDefault
Valeur par défaut de la propriété.

Valeur de retour

Différent de zéro si l’échange a réussi ; 0 en cas d’échec.

Notes

La valeur de la propriété est lue ou écrite dans la variable référencée par doubleValue, le cas échéant. Si doubleDefault est spécifié, il sera utilisé comme valeur par défaut de la propriété. Cette valeur est utilisée si, pour une raison quelconque, le processus de sérialisation du contrôle échoue.

PX_Font

Appelez cette fonction dans la fonction membre de DoPropExchange votre contrôle pour sérialiser ou initialiser une propriété de police de type.

BOOL PX_Font(
    CPropExchange* pPX,
    LPCTSTR pszPropName,
    CFontHolder& font,
    const FONTDESC FAR* pFontDesc = NULL,
    LPFONTDISP pFontDispAmbient = NULL);

Paramètres

pPX
Pointeur vers l’objet CPropExchange (généralement passé en tant que paramètre à DoPropExchange).

pszPropName
Nom de la propriété en cours d’échange.

police
Référence à un CFontHolder objet qui contient la propriété de police.

pFontDesc
Pointeur vers une FONTDESC structure contenant les valeurs à utiliser pour initialiser l’état par défaut de la propriété de police, dans le cas où pFontDispAmbient est NULL.

pFontDispAmbient
Pointeur vers l’interface IFontDisp d’une police à utiliser pour initialiser l’état par défaut de la propriété de police.

Valeur de retour

Différent de zéro si l’échange a réussi ; 0 en cas d’échec.

Notes

La valeur de la propriété est lue ou écrite dans font, une CFontHolder référence, le cas échéant. Si pFontDesc et pFontDispAmbient sont spécifiés, ils sont utilisés pour initialiser la valeur par défaut de la propriété, si nécessaire. Ces valeurs sont utilisées si, pour une raison quelconque, le processus de sérialisation du contrôle échoue. En règle générale, vous passez NULL pour pFontDesc et la valeur ambiante retournée par COleControl::AmbientFont pFontDispAmbient. Notez que l’objet de police retourné par COleControl::AmbientFont doit être libéré par un appel à la IFontDisp::Release fonction membre.

PX_Float

Appelez cette fonction dans la fonction membre de DoPropExchange votre contrôle pour sérialiser ou initialiser une propriété de type float.

BOOL PX_Float(
    CPropExchange* pPX,
    LPCTSTR pszPropName,
    float& floatValue);

BOOL PX_Float(
    CPropExchange* pPX,
    LPCTSTR pszPropName,
    float& floatValue,
    float floatDefault);

Paramètres

pPX
Pointeur vers l’objet CPropExchange (généralement passé en tant que paramètre à DoPropExchange).

pszPropName
Nom de la propriété en cours d’échange.

floatValue
Référence à la variable où la propriété est stockée (généralement une variable membre de votre classe).

floatDefault
Valeur par défaut de la propriété.

Valeur de retour

Différent de zéro si l’échange a réussi ; 0 en cas d’échec.

Notes

La valeur de la propriété est lue ou écrite dans la variable référencée par floatValue, le cas échéant. Si floatDefault est spécifié, il sera utilisé comme valeur par défaut de la propriété. Cette valeur est utilisée si, pour une raison quelconque, le processus de sérialisation du contrôle échoue.

PX_IUnknown

Appelez cette fonction dans la fonction membre de DoPropExchange votre contrôle pour sérialiser ou initialiser une propriété représentée par un objet ayant une IUnknowninterface dérivée.

BOOL PX_IUnknown(
    CPropExchange* pPX,
    LPCTSTR pszPropName,
    LPUNKNOWN& pUnk,
    REFIID iid,
    LPUNKNOWN pUnkDefault = NULL);

Paramètres

pPX
Pointeur vers l’objet CPropExchange (généralement passé en tant que paramètre à DoPropExchange).

pszPropName
Nom de la propriété en cours d’échange.

punk
Référence à une variable contenant l’interface de l’objet qui représente la valeur de la propriété.

iid
ID d’interface indiquant l’interface de l’objet de propriété utilisée par le contrôle.

pUnkDefault
Valeur par défaut de la propriété.

Valeur de retour

Différent de zéro si l’échange a réussi ; 0 en cas d’échec.

Notes

La valeur de la propriété est lue ou écrite dans la variable référencée par pUnk, le cas échéant. Si pUnkDefault est spécifié, il sera utilisé comme valeur par défaut de la propriété. Cette valeur est utilisée si, pour une raison quelconque, le processus de sérialisation du contrôle échoue.

PX_Long

Appelez cette fonction dans la fonction membre de DoPropExchange votre contrôle pour sérialiser ou initialiser une propriété de type long.

BOOL PX_Long(
    CPropExchange* pPX,
    LPCTSTR pszPropName,
    long& lValue);

BOOL PX_Long(
    CPropExchange* pPX,
    LPCTSTR pszPropName,
    long& lValue,
    long lDefault);

Paramètres

pPX
Pointeur vers l’objet CPropExchange (généralement passé en tant que paramètre à DoPropExchange).

pszPropName
Nom de la propriété en cours d’échange.

lValue
Référence à la variable où la propriété est stockée (généralement une variable membre de votre classe).

lDefault
Valeur par défaut de la propriété.

Valeur de retour

Différent de zéro si l’échange a réussi ; 0 en cas d’échec.

Notes

La valeur de la propriété est lue ou écrite dans la variable référencée par lValue, le cas échéant. Si lDefault est spécifié, il sera utilisé comme valeur par défaut de la propriété. Cette valeur est utilisée si, pour une raison quelconque, le processus de sérialisation du contrôle échoue.

PX_Picture

Appelez cette fonction dans la fonction membre de DoPropExchange votre contrôle pour sérialiser ou initialiser une propriété image de votre contrôle.

BOOL PX_Picture(
    CPropExchange* pPX,
    LPCTSTR pszPropName,
    CPictureHolder& pict);

BOOL PX_Picture(
    CPropExchange* pPX,
    LPCTSTR pszPropName,
    CPictureHolder& pict,
    CPictureHolder& pictDefault);

Paramètres

pPX
Pointeur vers l’objet CPropExchange (généralement passé en tant que paramètre à DoPropExchange).

pszPropName
Nom de la propriété en cours d’échange.

Pict
Référence à un objet CPictureHolder où la propriété est stockée (généralement une variable membre de votre classe).

pictDefault
Valeur par défaut de la propriété.

Valeur de retour

Différent de zéro si l’échange a réussi ; 0 en cas d’échec.

Notes

La valeur de la propriété est lue ou écrite dans la variable référencée par pict, le cas échéant. Si pictDefault est spécifié, il sera utilisé comme valeur par défaut de la propriété. Cette valeur est utilisée si, pour une raison quelconque, le processus de sérialisation du contrôle échoue.

PX_Short

Appelez cette fonction dans la fonction membre de DoPropExchange votre contrôle pour sérialiser ou initialiser une propriété de type short.

BOOL PX_Short(
    CPropExchange* pPX,
    LPCTSTR pszPropName,
    short& sValue);

BOOL PX_Short(
    CPropExchange* pPX,
    LPCTSTR pszPropName,
    short& sValue,
    short sDefault);

Paramètres

pPX
Pointeur vers l’objet CPropExchange (généralement passé en tant que paramètre à DoPropExchange).

pszPropName
Nom de la propriété en cours d’échange.

sValue
Référence à la variable où la propriété est stockée (généralement une variable membre de votre classe).

sDefault
Valeur par défaut de la propriété.

Valeur de retour

Différent de zéro si l’échange a réussi ; 0 en cas d’échec.

Notes

La valeur de la propriété est lue ou écrite dans la variable référencée par sValue, le cas échéant. Si sDefault est spécifié, il sera utilisé comme valeur par défaut de la propriété. Cette valeur est utilisée si, pour une raison quelconque, le processus de sérialisation du contrôle échoue.

PX_ULong

Appelez cette fonction dans la fonction membre de DoPropExchange votre contrôle pour sérialiser ou initialiser une propriété de type ULONG.

BOOL PX_ULong(
    CPropExchange* pPX,
    LPCTSTR pszPropName,
    ULONG& ulValue);

BOOL PX_ULong(
    CPropExchange* pPX,
    LPCTSTR pszPropName,
    ULONG& ulValue,
    long ulDefault);

Paramètres

pPX
Pointeur vers l’objet CPropExchange (généralement passé en tant que paramètre à DoPropExchange).

pszPropName
Nom de la propriété en cours d’échange.

ulValue
Référence à la variable où la propriété est stockée (généralement une variable membre de votre classe).

ulDefault
Valeur par défaut de la propriété.

Valeur de retour

Différent de zéro si l’échange a réussi ; 0 en cas d’échec.

Notes

La valeur de la propriété est lue ou écrite dans la variable référencée par ulValue, le cas échéant. Si ulDefault est spécifié, il sera utilisé comme valeur par défaut de la propriété. Cette valeur est utilisée si, pour une raison quelconque, le processus de sérialisation du contrôle échoue.

PX_UShort

Appelez cette fonction dans la fonction membre de DoPropExchange votre contrôle pour sérialiser ou initialiser une propriété de type unsigned short.

BOOL PX_UShort(
    CPropExchange* pPX,
    LPCTSTR pszPropName,
    USHORT& usValue);

BOOL PX_UShort(
    CPropExchange* pPX,
    LPCTSTR pszPropName,
    USHORT& usValue,
    USHORT usDefault);

Paramètres

pPX
Pointeur vers l’objet CPropExchange (généralement passé en tant que paramètre à DoPropExchange).

pszPropName
Nom de la propriété en cours d’échange.

usValue
Référence à la variable où la propriété est stockée (généralement une variable membre de votre classe).

usDefault
Valeur par défaut de la propriété.

Valeur de retour

Différent de zéro si l’échange a réussi ; 0 en cas d’échec.

Notes

La valeur de la propriété est lue ou écrite dans la variable référencée par usValue, le cas échéant. Si usDefault est spécifié, il sera utilisé comme valeur par défaut de la propriété. Cette valeur est utilisée si, pour une raison quelconque, le processus de sérialisation du contrôle échoue.

PXstring

Appelez cette fonction dans la fonction membre de DoPropExchange votre contrôle pour sérialiser ou initialiser une propriété de chaîne de caractères.

BOOL PXstring(
    CPropExchange* pPX,
    LPCTSTR pszPropName,
    CString& strValue);

BOOL PXstring(
    CPropExchange* pPX,
    LPCTSTR pszPropName,
    CString& strValue,
    CString strDefault);

Paramètres

pPX
Pointeur vers l’objet CPropExchange (généralement passé en tant que paramètre à DoPropExchange).

pszPropName
Nom de la propriété en cours d’échange.

strValue
Référence à la variable où la propriété est stockée (généralement une variable membre de votre classe).

strDefault
Valeur par défaut de la propriété.

Valeur de retour

Différent de zéro si l’échange a réussi ; 0 en cas d’échec.

Notes

La valeur de la propriété est lue ou écrite dans la variable référencée par strValue, le cas échéant. Si strDefault est spécifié, il sera utilisé comme valeur par défaut de la propriété. Cette valeur est utilisée si, pour une raison quelconque, le processus de sérialisation du contrôle échoue.

PX_VBXFontConvert

Appelez cette fonction dans la fonction membre de DoPropExchange votre contrôle pour initialiser une propriété de police en convertissant les propriétés liées à la police d’un contrôle VBX.

BOOL PX_VBXFontConvert(
    CPropExchange* pPX,
    CFontHolder& font);

Paramètres

pPX
Pointeur vers l’objet CPropExchange (généralement passé en tant que paramètre à DoPropExchange).

police
Propriété de police du contrôle OLE qui contiendra les propriétés de police VBX converties.

Valeur de retour

Différent de zéro si l’échange a réussi ; 0 en cas d’échec.

Notes

Cette fonction doit être utilisée uniquement par un contrôle OLE conçu comme remplacement direct d’un contrôle VBX. Lorsque l’environnement de développement Visual Basic convertit un formulaire contenant un contrôle VBX pour utiliser le contrôle OLE de remplacement correspondant, il appelle la fonction du contrôle, en passant un jeu de IDataObject::SetData propriétés qui contient les données de propriété du contrôle VBX. Cette opération, à son tour, entraîne l’appel de la fonction du DoPropExchange contrôle. DoPropExchange peut appeler PX_VBXFontConvert pour convertir les propriétés liées à la police du contrôle VBX (par exemple, « FontName », « FontSize », et ainsi de suite) en composants correspondants de la propriété de police du contrôle OLE.

PX_VBXFontConvert ne doit être appelé que lorsque le contrôle est réellement converti à partir d’une application de formulaire VBX. Par exemple :

void CMFCActiveXControlCtrl::DoPropExchange(CPropExchange* pPX)
{
   ExchangeVersion(pPX, MAKELONG(_wVerMinor, _wVerMajor));
   COleControl::DoPropExchange(pPX);

   if (IsConvertingVBX())
      PX_VBXFontConvert(pPX, InternalGetFont());
}

Voir aussi

Macros et globals