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 IUnknown
interface 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());
}