Compartir a través de


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.

Consulte también

Gráfico de jerarquías
COleControl::DoPropExchange