Persistenza di controlli OLE
Una funzionalità dei controlli OLE è la persistenza delle proprietà (o la serializzazione), che consente al controllo OLE di leggere o scrivere valori di proprietà da e verso un file o un flusso. Un'applicazione contenitore può usare la serializzazione per archiviare i valori delle proprietà di un controllo anche dopo che l'applicazione ha eliminato definitivamente il controllo. I valori delle proprietà del controllo OLE possono quindi essere letti dal file o dal flusso quando viene creata una nuova istanza del controllo in un secondo momento.
Persistenza di controlli OLE
Nome | Descrizione |
---|---|
PX_Blob | Scambia una proprietà di controllo che archivia i dati BLOB (Binary Large Object). |
PX_Bool | Scambia una proprietà di controllo di tipo BOOL. |
PX_Color | Scambia una proprietà colore di un controllo . |
PX_Currency | Scambia una proprietà di controllo di tipo CY. |
PX_DataPath | Scambia una proprietà del controllo di tipo CDataPathProperty . |
PX_Double | Scambia una proprietà del controllo di tipo double . |
PX_Font | Scambia una proprietà del tipo di carattere di un controllo . |
PX_Float | Scambia una proprietà del controllo di tipo float . |
PX_IUnknown | Scambia una proprietà di controllo di tipo non definito. |
PX_Long | Scambia una proprietà del controllo di tipo long . |
PX_Picture | Scambia una proprietà immagine di un controllo . |
PX_Short | Scambia una proprietà del controllo di tipo short . |
PX_ULong | Scambia una proprietà di controllo di tipo ULONG. |
PX_UShort | Scambia una proprietà di controllo di tipo USHORT. |
PXstring | Scambia una proprietà del controllo stringa di caratteri. |
PX_VBXFontConvert | Scambia le proprietà relative ai tipi di carattere di un controllo VBX in una proprietà del tipo di carattere del controllo OLE. |
Inoltre, la AfxOleTypeMatchGuid
funzione globale viene fornita per testare la corrispondenza tra un TYPEDESC e un DETERMINATO GUID.
PX_Blob
Chiamare questa funzione all'interno della funzione membro del DoPropExchange
controllo per serializzare o inizializzare una proprietà che archivia dati BLOB (Binary Large Object).
BOOL PX_Blob(
CPropExchange* pPX,
LPCTSTR pszPropName,
HGLOBAL& hBlob,
HGLOBAL hBlobDefault = NULL);
Parametri
pPX
Puntatore all'oggetto CPropExchange (in genere passato come parametro a DoPropExchange
).
pszPropName
Nome della proprietà in fase di scambio.
hBlob
Riferimento alla variabile in cui è archiviata la proprietà (in genere una variabile membro della classe).
hBlobDefault
Valore predefinito per la proprietà .
Valore restituito
Diverso da zero se lo scambio ha avuto esito positivo; 0 in caso di esito negativo.
Osservazioni:
Il valore della proprietà verrà letto o scritto nella variabile a cui fa riferimento hBlob, in base alle esigenze. Questa variabile deve essere inizializzata su NULL prima di chiamare PX_Blob
inizialmente per la prima volta (in genere, questa operazione può essere eseguita nel costruttore del controllo). Se viene specificato hBlobDefault , verrà usato come valore predefinito della proprietà. Questo valore viene utilizzato se, per qualsiasi motivo, l'inizializzazione o il processo di serializzazione del controllo non riesce.
Gli handle hBlob e hBlobDefault fanno riferimento a un blocco di memoria che contiene quanto segue:
DWORD che contiene la lunghezza, in byte, dei dati binari che seguono, seguiti immediatamente da
Blocco di memoria contenente i dati binari effettivi.
Si noti che PX_Blob
allocherà memoria, usando l'API GlobalAlloc di Windows, durante il caricamento delle proprietà di tipo BLOB. Sei responsabile della liberazione di questa memoria. Di conseguenza, il distruttore del controllo deve chiamare GlobalFree in qualsiasi handle di proprietà di tipo BLOB per liberare qualsiasi memoria allocata al controllo.
PX_Bool
Chiamare questa funzione all'interno della funzione membro del DoPropExchange
controllo per serializzare o inizializzare una proprietà di tipo BOOL.
BOOL PX_Bool(
CPropExchange* pPX,
LPCTSTR pszPropName,
BOOL& bValue);
BOOL PX_Bool(
CPropExchange* pPX,
LPCTSTR pszPropName,
BOOL& bValue,
BOOL bDefault);
Parametri
pPX
Puntatore all'oggetto CPropExchange (in genere passato come parametro a DoPropExchange
).
pszPropName
Nome della proprietà in fase di scambio.
bValue
Riferimento alla variabile in cui è archiviata la proprietà (in genere una variabile membro della classe).
bDefault
Valore predefinito per la proprietà .
Valore restituito
Diverso da zero se lo scambio ha avuto esito positivo; 0 in caso di esito negativo.
Osservazioni:
Il valore della proprietà verrà letto o scritto nella variabile a cui fa riferimento bValue, in base alle esigenze. Se viene specificato bDefault , verrà usato come valore predefinito della proprietà. Questo valore viene utilizzato se, per qualsiasi motivo, il processo di serializzazione del controllo non riesce.
PX_Color
Chiamare questa funzione all'interno della funzione membro del DoPropExchange
controllo per serializzare o inizializzare una proprietà di tipo 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);
Parametri
pPX
Puntatore all'oggetto CPropExchange (in genere passato come parametro a DoPropExchange
).
pszPropName
Nome della proprietà in fase di scambio.
clrValue
Riferimento alla variabile in cui è archiviata la proprietà (in genere una variabile membro della classe).
clrDefault
Valore predefinito per la proprietà, come definito dallo sviluppatore del controllo.
Valore restituito
Diverso da zero se lo scambio ha avuto esito positivo; 0 in caso di esito negativo.
Osservazioni:
Il valore della proprietà verrà letto o scritto nella variabile a cui fa riferimento clrValue, in base alle esigenze. Se si specifica clrDefault , verrà usato come valore predefinito della proprietà. Questo valore viene utilizzato se, per qualsiasi motivo, il processo di serializzazione del controllo non riesce.
PX_Currency
Chiamare questa funzione all'interno della funzione membro del DoPropExchange
controllo per serializzare o inizializzare una proprietà di tipo currency.
BOOL PX_Currency(
CPropExchange* pPX,
LPCTSTR pszPropName,
CY& cyValue);
BOOL PX_Currency(
CPropExchange* pPX,
LPCTSTR pszPropName,
CY& cyValue,
CY cyDefault);
Parametri
pPX
Puntatore all'oggetto CPropExchange (in genere passato come parametro a DoPropExchange
).
pszPropName
Nome della proprietà in fase di scambio.
cyValue
Riferimento alla variabile in cui è archiviata la proprietà (in genere una variabile membro della classe).
cyDefault
Valore predefinito per la proprietà .
Valore restituito
Diverso da zero se lo scambio ha avuto esito positivo; 0 in caso di esito negativo.
Osservazioni:
Il valore della proprietà verrà letto o scritto nella variabile a cui fa riferimento cyValue, in base alle esigenze. Se viene specificato cyDefault , verrà usato come valore predefinito della proprietà. Questo valore viene utilizzato se, per qualsiasi motivo, il processo di serializzazione del controllo non riesce.
PX_DataPath
Chiamare questa funzione all'interno della funzione membro del DoPropExchange
controllo per serializzare o inizializzare una proprietà del percorso dati di tipo CDataPathProperty.
BOOL PX_DataPath(
CPropExchange* pPX,
LPCTSTR pszPropName,
CDataPathProperty& dataPathProperty);
BOOL PX_DataPath(
CPropExchange* pPX,
CDataPathProperty& dataPathProperty);
Parametri
pPX
Puntatore all'oggetto CPropExchange (in genere passato come parametro a DoPropExchange
).
pszPropName
Nome della proprietà in fase di scambio.
dataPathProperty
Riferimento alla variabile in cui è archiviata la proprietà (in genere una variabile membro della classe).
Valore restituito
Diverso da zero se lo scambio ha avuto esito positivo; 0 in caso di esito negativo.
Osservazioni:
Le proprietà del percorso dati implementano le proprietà del controllo asincrono. Il valore della proprietà verrà letto o scritto nella variabile a cui fa riferimento dataPathProperty, in base alle esigenze.
PX_Double
Chiamare questa funzione all'interno della funzione membro del DoPropExchange
controllo per serializzare o inizializzare una proprietà di tipo double
.
BOOL PX_Double(
CPropExchange* pPX,
LPCTSTR pszPropName,
double& doubleValue);
BOOL PX_Double(
CPropExchange* pPX,
LPCTSTR pszPropName,
double& doubleValue,
double doubleDefault);
Parametri
pPX
Puntatore all'oggetto CPropExchange (in genere passato come parametro a DoPropExchange
).
pszPropName
Nome della proprietà in fase di scambio.
doubleValue
Riferimento alla variabile in cui è archiviata la proprietà (in genere una variabile membro della classe).
doubleDefault
Valore predefinito per la proprietà .
Valore restituito
Diverso da zero se lo scambio ha avuto esito positivo; 0 in caso di esito negativo.
Osservazioni:
Il valore della proprietà viene letto o scritto nella variabile a cui fa riferimento doubleValue, in base alle esigenze. Se si specifica doubleDefault , verrà usato come valore predefinito della proprietà. Questo valore viene utilizzato se, per qualsiasi motivo, il processo di serializzazione del controllo non riesce.
PX_Font
Chiamare questa funzione all'interno della funzione membro del DoPropExchange
controllo per serializzare o inizializzare una proprietà di tipo font.
BOOL PX_Font(
CPropExchange* pPX,
LPCTSTR pszPropName,
CFontHolder& font,
const FONTDESC FAR* pFontDesc = NULL,
LPFONTDISP pFontDispAmbient = NULL);
Parametri
pPX
Puntatore all'oggetto CPropExchange (in genere passato come parametro a DoPropExchange
).
pszPropName
Nome della proprietà in fase di scambio.
font
Riferimento a un CFontHolder
oggetto contenente la proprietà font.
pFontDesc
Puntatore a una FONTDESC
struttura contenente i valori da utilizzare per inizializzare lo stato predefinito della proprietà del tipo di carattere, nel caso in cui pFontDispAmbient sia NULL.
pFontDispAmbient
Puntatore all'interfaccia IFontDisp
di un tipo di carattere da utilizzare per inizializzare lo stato predefinito della proprietà del tipo di carattere.
Valore restituito
Diverso da zero se lo scambio ha avuto esito positivo; 0 in caso di esito negativo.
Osservazioni:
Il valore della proprietà viene letto o scritto in font
, un CFontHolder
riferimento, se appropriato. Se vengono specificati pFontDesc e pFontDispAmbient , vengono usati per inizializzare il valore predefinito della proprietà, quando necessario. Questi valori vengono utilizzati se, per qualsiasi motivo, il processo di serializzazione del controllo non riesce. In genere, si passa NULL per pFontDesc e il valore di ambiente restituito da COleControl::AmbientFont
per pFontDispAmbient. Si noti che l'oggetto tipo di carattere restituito da COleControl::AmbientFont
deve essere rilasciato da una chiamata alla IFontDisp::Release
funzione membro.
PX_Float
Chiamare questa funzione all'interno della funzione membro del DoPropExchange
controllo per serializzare o inizializzare una proprietà di tipo float
.
BOOL PX_Float(
CPropExchange* pPX,
LPCTSTR pszPropName,
float& floatValue);
BOOL PX_Float(
CPropExchange* pPX,
LPCTSTR pszPropName,
float& floatValue,
float floatDefault);
Parametri
pPX
Puntatore all'oggetto CPropExchange (in genere passato come parametro a DoPropExchange
).
pszPropName
Nome della proprietà in fase di scambio.
floatValue
Riferimento alla variabile in cui è archiviata la proprietà (in genere una variabile membro della classe).
floatDefault
Valore predefinito per la proprietà .
Valore restituito
Diverso da zero se lo scambio ha avuto esito positivo; 0 in caso di esito negativo.
Osservazioni:
Il valore della proprietà viene letto o scritto nella variabile a cui fa riferimento floatValue, in base alle esigenze. Se viene specificato floatDefault , verrà usato come valore predefinito della proprietà. Questo valore viene utilizzato se, per qualsiasi motivo, il processo di serializzazione del controllo non riesce.
PX_IUnknown
Chiamare questa funzione all'interno della funzione membro del DoPropExchange
controllo per serializzare o inizializzare una proprietà rappresentata da un oggetto con un'interfaccia IUnknown
derivata da .
BOOL PX_IUnknown(
CPropExchange* pPX,
LPCTSTR pszPropName,
LPUNKNOWN& pUnk,
REFIID iid,
LPUNKNOWN pUnkDefault = NULL);
Parametri
pPX
Puntatore all'oggetto CPropExchange (in genere passato come parametro a DoPropExchange
).
pszPropName
Nome della proprietà in fase di scambio.
Punk
Riferimento a una variabile contenente l'interfaccia dell'oggetto che rappresenta il valore della proprietà .
iid
ID interfaccia che indica quale interfaccia dell'oggetto proprietà viene utilizzata dal controllo .
pUnkDefault
Valore predefinito per la proprietà .
Valore restituito
Diverso da zero se lo scambio ha avuto esito positivo; 0 in caso di esito negativo.
Osservazioni:
Il valore della proprietà viene letto o scritto nella variabile a cui fa riferimento pUnk, in base alle esigenze. Se viene specificato pUnkDefault , verrà usato come valore predefinito della proprietà. Questo valore viene utilizzato se, per qualsiasi motivo, il processo di serializzazione del controllo non riesce.
PX_Long
Chiamare questa funzione all'interno della funzione membro del DoPropExchange
controllo per serializzare o inizializzare una proprietà di tipo long
.
BOOL PX_Long(
CPropExchange* pPX,
LPCTSTR pszPropName,
long& lValue);
BOOL PX_Long(
CPropExchange* pPX,
LPCTSTR pszPropName,
long& lValue,
long lDefault);
Parametri
pPX
Puntatore all'oggetto CPropExchange (in genere passato come parametro a DoPropExchange
).
pszPropName
Nome della proprietà in fase di scambio.
lValue
Riferimento alla variabile in cui è archiviata la proprietà (in genere una variabile membro della classe).
lDefault
Valore predefinito per la proprietà .
Valore restituito
Diverso da zero se lo scambio ha avuto esito positivo; 0 in caso di esito negativo.
Osservazioni:
Il valore della proprietà viene letto o scritto nella variabile a cui fa riferimento lValue, in base alle esigenze. Se viene specificato lDefault , verrà usato come valore predefinito della proprietà. Questo valore viene utilizzato se, per qualsiasi motivo, il processo di serializzazione del controllo non riesce.
PX_Picture
Chiamare questa funzione all'interno della funzione membro del DoPropExchange
controllo per serializzare o inizializzare una proprietà picture del controllo.
BOOL PX_Picture(
CPropExchange* pPX,
LPCTSTR pszPropName,
CPictureHolder& pict);
BOOL PX_Picture(
CPropExchange* pPX,
LPCTSTR pszPropName,
CPictureHolder& pict,
CPictureHolder& pictDefault);
Parametri
pPX
Puntatore all'oggetto CPropExchange (in genere passato come parametro a DoPropExchange
).
pszPropName
Nome della proprietà in fase di scambio.
Pict
Riferimento a un oggetto CPictureHolder in cui è archiviata la proprietà (in genere una variabile membro della classe).
pictDefault
Valore predefinito per la proprietà .
Valore restituito
Diverso da zero se lo scambio ha avuto esito positivo; 0 in caso di esito negativo.
Osservazioni:
Il valore della proprietà viene letto o scritto nella variabile a cui fa riferimento pict, in base alle esigenze. Se viene specificato pictDefault , verrà usato come valore predefinito della proprietà. Questo valore viene utilizzato se, per qualsiasi motivo, il processo di serializzazione del controllo non riesce.
PX_Short
Chiamare questa funzione all'interno della funzione membro del DoPropExchange
controllo per serializzare o inizializzare una proprietà di tipo short
.
BOOL PX_Short(
CPropExchange* pPX,
LPCTSTR pszPropName,
short& sValue);
BOOL PX_Short(
CPropExchange* pPX,
LPCTSTR pszPropName,
short& sValue,
short sDefault);
Parametri
pPX
Puntatore all'oggetto CPropExchange (in genere passato come parametro a DoPropExchange
).
pszPropName
Nome della proprietà in fase di scambio.
sValue
Riferimento alla variabile in cui è archiviata la proprietà (in genere una variabile membro della classe).
sDefault
Valore predefinito per la proprietà .
Valore restituito
Diverso da zero se lo scambio ha avuto esito positivo; 0 in caso di esito negativo.
Osservazioni:
Il valore della proprietà viene letto o scritto nella variabile a cui fa riferimento sValue, in base alle esigenze. Se viene specificato sDefault , verrà usato come valore predefinito della proprietà. Questo valore viene utilizzato se, per qualsiasi motivo, il processo di serializzazione del controllo non riesce.
PX_ULong
Chiamare questa funzione all'interno della funzione membro del DoPropExchange
controllo per serializzare o inizializzare una proprietà di tipo ULONG.
BOOL PX_ULong(
CPropExchange* pPX,
LPCTSTR pszPropName,
ULONG& ulValue);
BOOL PX_ULong(
CPropExchange* pPX,
LPCTSTR pszPropName,
ULONG& ulValue,
long ulDefault);
Parametri
pPX
Puntatore all'oggetto CPropExchange (in genere passato come parametro a DoPropExchange
).
pszPropName
Nome della proprietà in fase di scambio.
ulValue
Riferimento alla variabile in cui è archiviata la proprietà (in genere una variabile membro della classe).
ulDefault
Valore predefinito per la proprietà .
Valore restituito
Diverso da zero se lo scambio ha avuto esito positivo; 0 in caso di esito negativo.
Osservazioni:
Il valore della proprietà viene letto o scritto nella variabile a cui fa riferimento ulValue, in base alle esigenze. Se si specifica ulDefault , verrà usato come valore predefinito della proprietà. Questo valore viene utilizzato se, per qualsiasi motivo, il processo di serializzazione del controllo non riesce.
PX_UShort
Chiamare questa funzione all'interno della funzione membro del DoPropExchange
controllo per serializzare o inizializzare una proprietà di tipo unsigned short
.
BOOL PX_UShort(
CPropExchange* pPX,
LPCTSTR pszPropName,
USHORT& usValue);
BOOL PX_UShort(
CPropExchange* pPX,
LPCTSTR pszPropName,
USHORT& usValue,
USHORT usDefault);
Parametri
pPX
Puntatore all'oggetto CPropExchange (in genere passato come parametro a DoPropExchange
).
pszPropName
Nome della proprietà in fase di scambio.
usValue
Riferimento alla variabile in cui è archiviata la proprietà (in genere una variabile membro della classe).
usDefault
Valore predefinito per la proprietà .
Valore restituito
Diverso da zero se lo scambio ha avuto esito positivo; 0 in caso di esito negativo.
Osservazioni:
Il valore della proprietà viene letto o scritto nella variabile a cui fa riferimento usValue, in base alle esigenze. Se viene specificato usDefault , verrà usato come valore predefinito della proprietà. Questo valore viene utilizzato se, per qualsiasi motivo, il processo di serializzazione del controllo non riesce.
PXstring
Chiamare questa funzione all'interno della funzione membro del DoPropExchange
controllo per serializzare o inizializzare una proprietà stringa di caratteri.
BOOL PXstring(
CPropExchange* pPX,
LPCTSTR pszPropName,
CString& strValue);
BOOL PXstring(
CPropExchange* pPX,
LPCTSTR pszPropName,
CString& strValue,
CString strDefault);
Parametri
pPX
Puntatore all'oggetto CPropExchange (in genere passato come parametro a DoPropExchange
).
pszPropName
Nome della proprietà in fase di scambio.
strValue
Riferimento alla variabile in cui è archiviata la proprietà (in genere una variabile membro della classe).
strDefault
Valore predefinito per la proprietà .
Valore restituito
Diverso da zero se lo scambio ha avuto esito positivo; 0 in caso di esito negativo.
Osservazioni:
Il valore della proprietà viene letto o scritto nella variabile a cui fa riferimento strValue, in base alle esigenze. Se viene specificato strDefault , verrà usato come valore predefinito della proprietà. Questo valore viene utilizzato se, per qualsiasi motivo, il processo di serializzazione del controllo non riesce.
PX_VBXFontConvert
Chiamare questa funzione all'interno della funzione membro del DoPropExchange
controllo per inizializzare una proprietà del tipo di carattere convertendo le proprietà correlate al tipo di carattere di un controllo VBX.
BOOL PX_VBXFontConvert(
CPropExchange* pPX,
CFontHolder& font);
Parametri
pPX
Puntatore all'oggetto CPropExchange (in genere passato come parametro a DoPropExchange
).
font
Proprietà del tipo di carattere del controllo OLE che conterrà le proprietà relative ai tipi di carattere VBX convertite.
Valore restituito
Diverso da zero se lo scambio ha avuto esito positivo; 0 in caso di esito negativo.
Osservazioni:
Questa funzione deve essere utilizzata solo da un controllo OLE progettato come sostituzione diretta per un controllo VBX. Quando l'ambiente di sviluppo di Visual Basic converte una maschera contenente un controllo VBX per utilizzare il controllo OLE sostitutivo corrispondente, chiamerà la funzione del IDataObject::SetData
controllo, passando un set di proprietà contenente i dati delle proprietà del controllo VBX. Questa operazione, a sua volta, fa sì che la funzione del DoPropExchange
controllo venga richiamata. DoPropExchange
può chiamare PX_VBXFontConvert
per convertire le proprietà correlate al tipo di carattere del controllo VBX ,ad esempio "FontName", "FontSize" e così via, nei componenti corrispondenti della proprietà font del controllo OLE.
PX_VBXFontConvert
deve essere chiamato solo quando il controllo viene effettivamente convertito da un'applicazione di modulo VBX. Ad esempio:
void CMFCActiveXControlCtrl::DoPropExchange(CPropExchange* pPX)
{
ExchangeVersion(pPX, MAKELONG(_wVerMinor, _wVerMajor));
COleControl::DoPropExchange(pPX);
if (IsConvertingVBX())
PX_VBXFontConvert(pPX, InternalGetFont());
}