Condividi tramite


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

Vedi anche

Macro e globali