Classe CPropExchange
Supporta l'implementazione di persistenza per i controlli OLE.
Sintassi
class AFX_NOVTABLE CPropExchange
Membri
Metodi pubblici
Nome | Descrizione |
---|---|
CPropExchange::ExchangeBlobProp | Scambia una proprietà BLOB (Binary Large Object). |
CPropExchange::ExchangeFontProp | Scambia una proprietà del tipo di carattere. |
CPropExchange::ExchangePersistentProp | Scambia una proprietà tra un controllo e un file. |
CPropExchange::ExchangePropProp | Scambia proprietà di qualsiasi tipo predefinito. |
CPropExchange::ExchangeVersion | Scambia il numero di versione di un controllo OLE. |
CPropExchange::GetVersion | Recupera il numero di versione di un controllo OLE. |
CPropExchange::IsAsynchronous | Determina se gli scambi di proprietà vengono eseguiti in modo asincrono. |
CPropExchange::IsLoading | Indica se le proprietà vengono caricate nel controllo o salvate da esso. |
Osservazioni:
CPropExchange
non dispone di una classe di base.
Stabilisce il contesto e la direzione di uno scambio di proprietà.
La persistenza è lo scambio delle informazioni sullo stato del controllo, in genere rappresentate dalle relative proprietà, tra il controllo stesso e un supporto.
Il framework costruisce un oggetto derivato da CPropExchange
quando riceve una notifica che indica che le proprietà di un controllo OLE devono essere caricate da o archiviate in una risorsa di archiviazione permanente.
Il framework passa un puntatore a questo CPropExchange
oggetto alla funzione del DoPropExchange
controllo. Se è stata usata una procedura guidata per creare i file di avvio per il controllo, la funzione del DoPropExchange
controllo chiama COleControl::DoPropExchange
. La versione della classe base scambia le proprietà azionarie del controllo; si modifica la versione della classe derivata per scambiare le proprietà aggiunte al controllo.
CPropExchange
può essere utilizzato per serializzare le proprietà di un controllo o inizializzare le proprietà di un controllo al caricamento o alla creazione di un controllo. Le ExchangeProp
funzioni membro e ExchangeFontProp
di sono in grado di CPropExchange
archiviare le proprietà in e caricarle da supporti diversi.
Per altre informazioni sull'uso CPropExchange
di , vedere l'articolo Controlli ActiveX MFC: Pagine delle proprietà.
Gerarchia di ereditarietà
CPropExchange
Requisiti
Intestazione: afxctl.h
CPropExchange::ExchangeBlobProp
Serializza una proprietà che archivia dati BLOB (Binary Large Object).
virtual BOOL ExchangeBlobProp(
LPCTSTR pszPropName,
HGLOBAL* phBlob,
HGLOBAL hBlobDefault = NULL) = 0;
Parametri
pszPropName
Nome della proprietà in fase di scambio.
phBlob
Puntatore a una variabile che punta alla posizione in cui è archiviata la proprietà (la variabile è in genere un 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à viene letto o scritto in, in base alle esigenze, alla variabile a cui fa riferimento phBlob. Se viene specificato hBlobDefault , verrà usato come valore predefinito della proprietà. Questo valore viene utilizzato se, per qualsiasi motivo, la serializzazione del controllo non riesce.
Le funzioni CArchivePropExchange::ExchangeBlobProp
, CResetPropExchange::ExchangeBlobProp
e CPropsetPropExchange::ExchangeBlobProp
e eseguono l'override di questa funzione virtuale pura.
CPropExchange::ExchangeFontProp
Scambia una proprietà del tipo di carattere tra un supporto di archiviazione e il controllo .
virtual BOOL ExchangeFontProp(
LPCTSTR pszPropName,
CFontHolder& font,
const FONTDESC* pFontDesc,
LPFONTDISP pFontDispAmbient) = 0;
Parametri
pszPropName
Nome della proprietà in fase di scambio.
font
Riferimento a un oggetto CFontHolder che contiene la proprietà font.
pFontDesc
Puntatore a una struttura FONTDESC contenente valori per inizializzare lo stato predefinito della proprietà del tipo di carattere quando pFontDispAmbient è 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:
Se la proprietà del tipo di carattere viene caricata dal supporto al controllo, le caratteristiche del tipo di carattere vengono recuperate dal supporto e l'oggetto a cui fa riferimento il CFontHolder
tipo di carattere viene inizializzato. Se la proprietà del tipo di carattere viene archiviata, le caratteristiche dell'oggetto carattere vengono scritte nel supporto.
Le funzioni CArchivePropExchange::ExchangeFontProp
, CResetPropExchange::ExchangeFontProp
e CPropsetPropExchange::ExchangeFontProp
e eseguono l'override di questa funzione virtuale pura.
CPropExchange::ExchangePersistentProp
Scambia una proprietà tra il controllo e un file.
virtual BOOL ExchangePersistentProp(
LPCTSTR pszPropName,
LPUNKNOWN* ppUnk,
REFIID iid,
LPUNKNOWN pUnkDefault) = 0;
Parametri
pszPropName
Nome della proprietà in fase di scambio.
ppUnk
Puntatore a una variabile contenente un puntatore all'interfaccia della IUnknown
proprietà (questa variabile è in genere un membro della classe).
iid
ID interfaccia dell'interfaccia nella proprietà che verrà 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:
Se la proprietà viene caricata dal file al controllo, la proprietà viene creata e inizializzata dal file. Se la proprietà viene archiviata, il relativo valore viene scritto nel file.
Le funzioni CArchivePropExchange::ExchangePersistentProp
, CResetPropExchange::ExchangePersistentProp
e CPropsetPropExchange::ExchangePersistentProp
e eseguono l'override di questa funzione virtuale pura.
CPropExchange::ExchangePropProp
Scambia una proprietà tra un supporto di archiviazione e il controllo .
virtual BOOL ExchangeProp(
LPCTSTR pszPropName,
VARTYPE vtProp,
void* pvProp,
const void* pvDefault = NULL) = 0 ;
Parametri
pszPropName
Nome della proprietà in fase di scambio.
vtProp
Simbolo che specifica il tipo della proprietà in fase di scambio. I valori possibili sono:
Simbolo | Tipo di proprietà |
---|---|
VT_I2 | short |
VT_I4 | long |
VT_BOOL | BOOL |
VT_BSTR | CString |
VT_CY | CY |
VT_R4 | float |
VT_R8 | double |
pvProp
Puntatore al valore della proprietà.
pvDefault
Puntatore a un valore predefinito per la proprietà .
Valore restituito
Diverso da zero se lo scambio ha avuto esito positivo; 0 in caso di esito negativo.
Osservazioni:
Se la proprietà viene caricata dal supporto al controllo, il valore della proprietà viene recuperato dal supporto e archiviato nell'oggetto a cui punta pvProp. Se la proprietà viene archiviata nel supporto, il valore dell'oggetto a cui punta pvProp viene scritto nel supporto.
Le funzioni CArchivePropExchange::ExchangeProp
, CResetPropExchange::ExchangeProp
e CPropsetPropExchange::ExchangeProp
e eseguono l'override di questa funzione virtuale pura.
CPropExchange::ExchangeVersion
Chiamato dal framework per gestire la persistenza di un numero di versione.
virtual BOOL ExchangeVersion(
DWORD& dwVersionLoaded,
DWORD dwVersionDefault,
BOOL bConvert);
Parametri
dwVersionLoaded
Riferimento a una variabile in cui verrà archiviato il numero di versione dei dati persistenti caricati.
dwVersionDefault
Numero di versione corrente del controllo.
bConvert
Indica se convertire i dati persistenti nella versione corrente o mantenerli nella stessa versione caricata.
Valore restituito
Diverso da zero se la funzione ha avuto esito positivo; 0 in caso contrario.
CPropExchange::GetVersion
Chiamare questa funzione per recuperare il numero di versione del controllo.
DWORD GetVersion();
Valore restituito
Numero di versione del controllo.
CPropExchange::IsAsynchronous
Determina se gli scambi di proprietà vengono eseguiti in modo asincrono.
BOOL IsAsynchronous();
Valore restituito
Restituisce TRUE se le proprietà vengono scambiate in modo asincrono, in caso contrario FALSE.
CPropExchange::IsLoading
Chiamare questa funzione per determinare se le proprietà vengono caricate nel controllo o salvate.
BOOL IsLoading();
Valore restituito
Diverso da zero se vengono caricate le proprietà; in caso contrario, 0.