CPropExchange Class
Admite la implementación de persistencia para controles OLE.
Sintaxis
class AFX_NOVTABLE CPropExchange
Miembros
Métodos públicos
Nombre | Descripción |
---|---|
CPropExchange::ExchangeBlobProp | Intercambia una propiedad de objeto binario grande (BLOB). |
CPropExchange::ExchangeFontProp | Intercambia una propiedad de fuente. |
CPropExchange::ExchangePersistentProp | Intercambia una propiedad entre un control y un archivo. |
CPropExchange::ExchangeProp | Intercambia propiedades de cualquier tipo integrado. |
CPropExchange::ExchangeVersion | Intercambia el número de versiones de un control OLE. |
CPropExchange::GetVersion | Recupera el número de versión de un control OLE. |
CPropExchange::IsAsynchronous | Determina si los intercambios de propiedades se realizan de forma asincrónica. |
CPropExchange::IsLoading | Indica si las propiedades se cargan en el control o se guardan desde él. |
Comentarios
CPropExchange
no tiene una clase base.
Establece el contexto y la dirección de un intercambio de propiedades.
La persistencia es el intercambio de la información de estado del control, normalmente representada por sus propiedades, entre el propio control y un medio.
El marco crea un objeto derivado de CPropExchange
cuando se notifica que las propiedades de un control OLE se van a cargar desde el almacenamiento persistente o se almacenarán allí.
El marco pasa un puntero a este CPropExchange
objeto a la función DoPropExchange
de control. Si usó un asistente para crear los archivos de inicio del control, la función de DoPropExchange
control de llamadasCOleControl::DoPropExchange
. La versión de clase base intercambia las propiedades de acciones del control; modifique la versión de la clase derivada para intercambiar las propiedades que ha agregado al control.
CPropExchange
se puede usar para serializar las propiedades de un control o inicializar las propiedades de un control tras la carga o creación de un control. Las funciones miembro ExchangeProp
y ExchangeFontProp
de CPropExchange
pueden almacenar propiedades y cargarlas desde distintos medios.
Para obtener más información sobre el CPropExchange
, vea el artículo sobre controles ActiveX MFC: Páginas de propiedades.
Jerarquía de herencia
CPropExchange
Requisitos
Encabezado: afxctl.h
CPropExchange::ExchangeBlobProp
Serializa una propiedad que almacena datos de objetos binarios grandes (BLOB).
virtual BOOL ExchangeBlobProp(
LPCTSTR pszPropName,
HGLOBAL* phBlob,
HGLOBAL hBlobDefault = NULL) = 0;
Parámetros
pszPropName
El nombre de la propiedad que se va a intercambiar.
phBlob
Puntero a una variable que apunta a dónde se almacena la propiedad (la variable suele ser miembro de su clase).
hBlobDefault
Valor predeterminado de la propiedad.
Valor devuelto
Distinto de cero si el intercambio se ha realizado correctamente; 0 si no se realiza correctamente.
Comentarios
El valor de la propiedad se lee o se escribe en, según corresponda, en la variable a la que hace referencia phBlob. Si se especificahBlobDefault, se usará como valor predeterminado de la propiedad. Este valor se usa si, por cualquier motivo, se produce un error en la serialización del control.
Las funciones CArchivePropExchange::ExchangeBlobProp
, CResetPropExchange::ExchangeBlobProp
y CPropsetPropExchange::ExchangeBlobProp
invalidan esta función virtual pura.
CPropExchange::ExchangeFontProp
Intercambia una propiedad de fuente entre un medio de almacenamiento y el control.
virtual BOOL ExchangeFontProp(
LPCTSTR pszPropName,
CFontHolder& font,
const FONTDESC* pFontDesc,
LPFONTDISP pFontDispAmbient) = 0;
Parámetros
pszPropName
El nombre de la propiedad que se va a intercambiar.
font
Referencia a un objeto CFontHolder que contiene la propiedad fuente.
pFontDesc
Puntero a una estructura FONTDESC que contiene valores para inicializar el estado predeterminado de la propiedad de fuente cuando pFontDispAmbient es NULL.
pFontDispAmbient
Puntero a la interfaz IFontDisp
de una fuente que se va a usar para inicializar el estado predeterminado de la propiedad de fuente.
Valor devuelto
Distinto de cero si el intercambio se ha realizado correctamente; 0 si no se realiza correctamente.
Comentarios
Si la propiedad de fuente se carga desde el medio al control, las características de la fuente se recuperan del medio y el objeto CFontHolder
al que hace referencia la fuente se inicializa con ellos. Si se almacena la propiedad de fuente, las características del objeto de fuente se escriben en el medio.
Las funciones CArchivePropExchange::ExchangeFontProp
, CResetPropExchange::ExchangeFontProp
y CPropsetPropExchange::ExchangeFontProp
invalidan esta función virtual pura.
CPropExchange::ExchangePersistentProp
Intercambia una propiedad entre el control y un archivo.
virtual BOOL ExchangePersistentProp(
LPCTSTR pszPropName,
LPUNKNOWN* ppUnk,
REFIID iid,
LPUNKNOWN pUnkDefault) = 0;
Parámetros
pszPropName
El nombre de la propiedad que se va a intercambiar.
ppUnk
Puntero a una variable que contiene un puntero a la interfaz de propiedad IUnknown
(esta variable suele ser miembro de la clase).
iid
Identificador de interfaz de la interfaz en la propiedad que el control utilizará.
pUnkDefault
Valor predeterminado de la propiedad.
Valor devuelto
Distinto de cero si el intercambio se ha realizado correctamente; 0 si no se realiza correctamente.
Comentarios
Si la propiedad se carga desde el archivo al control, la propiedad se crea e inicializa desde el archivo. Si la propiedad se almacena, su valor se escribe en el archivo.
Las funciones CArchivePropExchange::ExchangePersistentProp
, CResetPropExchange::ExchangePersistentProp
y CPropsetPropExchange::ExchangePersistentProp
invalidan esta función virtual pura.
CPropExchange::ExchangeProp
Intercambia una propiedad entre un medio de almacenamiento y el control.
virtual BOOL ExchangeProp(
LPCTSTR pszPropName,
VARTYPE vtProp,
void* pvProp,
const void* pvDefault = NULL) = 0 ;
Parámetros
pszPropName
El nombre de la propiedad que se va a intercambiar.
vtProp
Símbolo que especifica el tipo de la propiedad que se va a intercambiar. Los valores posibles son:
Símbolo | Tipo de propiedad |
---|---|
VT_I2 | short |
VT_I4 | long |
VT_BOOL | BOOL |
VT_BSTR | CString |
VT_CY | CY |
VT_R4 | float |
VT_R8 | double |
pvProp
Puntero al valor de la propiedad.
pvDefault
Puntero a un valor predeterminado para la propiedad.
Valor devuelto
Distinto de cero si el intercambio se ha realizado correctamente; 0 si no se realiza correctamente.
Comentarios
Si la propiedad se carga desde el medio al control, el valor de la propiedad se recupera del medio y se almacena en el objeto al que apunta pvProp. Si la propiedad se almacena en el medio, el valor del objeto al que apunta pvProp se escribe en el medio.
Las funciones CArchivePropExchange::ExchangeProp
, CResetPropExchange::ExchangeProp
y CPropsetPropExchange::ExchangeProp
invalidan esta función virtual pura.
CPropExchange::ExchangeVersion
Lo llama el marco de trabajo para controlar la persistencia de un número de versión.
virtual BOOL ExchangeVersion(
DWORD& dwVersionLoaded,
DWORD dwVersionDefault,
BOOL bConvert);
Parámetros
dwVersionLoaded
Referencia a una variable donde se almacenará el número de versión de los datos persistentes que se cargan.
dwVersionDefault
Número de versión actual del control.
bConvert
Indica si se deben convertir datos persistentes a la versión actual o mantener los datos en la misma versión que se cargó.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario es 0.
CPropExchange::GetVersion
Llame a esta función para recuperar el número de versión del control.
DWORD GetVersion();
Valor devuelto
Número de versión del control.
CPropExchange::IsAsynchronous
Determina si los intercambios de propiedades se realizan de forma asincrónica.
BOOL IsAsynchronous();
Valor devuelto
Devuelve TRUE si las propiedades se intercambian de forma asincrónica; de lo contrario, devuelve FALSE.
CPropExchange::IsLoading
Llame a esta función para determinar si las propiedades se cargan en el control o se guardan desde él.
BOOL IsLoading();
Valor devuelto
Distinto de cero si se cargan propiedades; de lo contrario, 0.