共用方式為


CPropExchange 類別

支援 OLE 控制項的永續性實作。

語法

class AFX_NOVTABLE CPropExchange

成員

公用方法

名稱 描述
CPropExchange::ExchangeBlobProp 交換二進位大型物件 (BLOB) 屬性。
CPropExchange::ExchangeFontProp 交換字型屬性。
CPropExchange::ExchangePersistentProp 在控件與檔案之間交換 屬性。
CPropExchange::ExchangeProp 交換任何內建類型的屬性。
CPropExchange::ExchangeVersion 交換 OLE 控制件的版本號碼。
CPropExchange::GetVersion 擷取 OLE 控制件的版本號碼。
CPropExchange::IsAsynchronous 判斷屬換是否以異步方式完成。
CPropExchange::IsLoading 指出屬性是載入控件或從控件儲存。

備註

CPropExchange 沒有基類。

建立屬換的內容和方向。

持續性是控件狀態信息的交換,通常是由控件本身與媒體之間的屬性表示。

架構會在收到 OLE 控件屬性要從中載入或儲存至永續性記憶體的通知時,建構衍生自 CPropExchange 的物件。

架構會將這個 CPropExchange 物件的指標傳遞給控件的 DoPropExchange 函式。 如果您使用精靈來建立控制元件的起始檔案,控制項的 DoPropExchange 函式會呼叫 COleControl::DoPropExchange。 基類版本會交換控件的股票屬性:您可以修改衍生類別的版本,以交換已新增至控件的屬性。

CPropExchange 可用來串行化控件的屬性,或在載入或建立控件時初始化控件的屬性。 的 ExchangePropExchangeFontProp 成員函式 CPropExchange 能夠儲存屬性,並從不同的媒體載入屬性。

如需使用 CPropExchange的詳細資訊,請參閱 MFC ActiveX 控件:屬性頁一文

繼承階層架構

CPropExchange

需求

標頭: afxctl.h

CPropExchange::ExchangeBlobProp

串行化儲存二進位大型物件 (BLOB) 資料的屬性。

virtual BOOL ExchangeBlobProp(
    LPCTSTR pszPropName,
    HGLOBAL* phBlob,
    HGLOBAL hBlobDefault = NULL) = 0;

參數

pszPropName
要交換之屬性的名稱。

phBlob
指向屬性儲存位置之變數的指標(變數通常是類別的成員)。

hBlobDefault
屬性的預設值。

傳回值

如果交換成功,則為非零;如果失敗,則為 0。

備註

屬性的值會視需要讀取或寫入 phBlob參考的變數。 如果 指定 hBlobDefault ,則會使用它作為屬性的預設值。 如果基於任何原因,控件的串行化失敗,就會使用這個值。

函式 CArchivePropExchange::ExchangeBlobPropCResetPropExchange::ExchangeBlobPropCPropsetPropExchange::ExchangeBlobProp 會覆寫這個純虛擬函式。

CPropExchange::ExchangeFontProp

交換儲存媒體與控件之間的字型屬性。

virtual BOOL ExchangeFontProp(
    LPCTSTR pszPropName,
    CFontHolder& font,
    const FONTDESC* pFontDesc,
    LPFONTDISP pFontDispAmbient) = 0;

參數

pszPropName
要交換之屬性的名稱。

字體
包含字型屬性的 CFontHolder 對象的參考

pFontDesc
當 pFontDispAmbient 為 NULL 時,FONTDESC 結構的指標,包含初始化字型屬性默認狀態的值。

pFontDispAmbient
要用來初始化字型屬性之默認狀態之字型介面的指標 IFontDisp

傳回值

如果交換成功,則為非零;如果失敗,則為 0。

備註

如果要將字型屬性從媒體載入控件,則會從中型擷取字型的特性,並使用CFontHolder它們初始化字型所參考的物件。 如果要儲存字型屬性,字型物件中的特性會寫入媒體。

函式 CArchivePropExchange::ExchangeFontPropCResetPropExchange::ExchangeFontPropCPropsetPropExchange::ExchangeFontProp 會覆寫這個純虛擬函式。

CPropExchange::ExchangePersistentProp

在控件與檔案之間交換 屬性。

virtual BOOL ExchangePersistentProp(
    LPCTSTR pszPropName,
    LPUNKNOWN* ppUnk,
    REFIID iid,
    LPUNKNOWN pUnkDefault) = 0;

參數

pszPropName
要交換之屬性的名稱。

ppUnk
變數的指標,其中包含屬性介面的 IUnknown 指標(這個變數通常是類別的成員)。

iid
控制件將使用之 屬性上的介面介面識別碼。

pUnkDefault
屬性的預設值。

傳回值

如果交換成功,則為非零;如果失敗,則為 0。

備註

如果屬性是從檔案載入至 控件,則會從檔案建立並初始化 屬性。 如果正在儲存屬性,則會將其值寫入檔案。

函式 CArchivePropExchange::ExchangePersistentPropCResetPropExchange::ExchangePersistentPropCPropsetPropExchange::ExchangePersistentProp 會覆寫這個純虛擬函式。

CPropExchange::ExchangeProp

在儲存媒體與控件之間交換 屬性。

virtual BOOL ExchangeProp(
    LPCTSTR pszPropName,
    VARTYPE vtProp,
    void* pvProp,
    const void* pvDefault = NULL) = 0 ;

參數

pszPropName
要交換之屬性的名稱。

vtProp
指定所交換之屬性類型的符號。 可能的值包括:

符號 屬性類型
VT_I2 short
VT_I4 long
VT_BOOL BOOL
VT_BSTR CString
VT_CY CY
VT_R4 float
VT_R8 double

pvProp
屬性值的指標。

pvDefault
屬性之預設值的指標。

傳回值

如果交換成功,則為非零;如果失敗,則為 0。

備註

如果屬性是從媒體載入至控件,則會從中型擷取屬性的值,並儲存在pvProp指向的物件中。 如果屬性儲存至媒體,pvProp指向的物件值會寫入媒體。

函式 CArchivePropExchange::ExchangePropCResetPropExchange::ExchangePropCPropsetPropExchange::ExchangeProp 會覆寫這個純虛擬函式。

CPropExchange::ExchangeVersion

由架構呼叫以處理版本號碼的持續性。

virtual BOOL ExchangeVersion(
    DWORD& dwVersionLoaded,
    DWORD dwVersionDefault,
    BOOL bConvert);

參數

dwVersionLoaded
要載入之永續性數據的版本號碼將儲存的變數參考。

dwVersionDefault
控制件的目前版本號碼。

bConvert
指出是否要將永續性數據轉換成目前版本,或將它保留在已載入的相同版本。

傳回值

如果函式成功,則為非零;否則為 0。

CPropExchange::GetVersion

呼叫此函式以擷取控件的版本號碼。

DWORD GetVersion();

傳回值

控制件版本號碼。

CPropExchange::IsAsynchronous

判斷屬換是否以異步方式完成。

BOOL IsAsynchronous();

傳回值

如果以異步方式交換屬性,則傳回 TRUE,否則傳回 FALSE。

CPropExchange::IsLoading

呼叫此函式,以判斷屬性是載入控件還是從控件儲存。

BOOL IsLoading();

傳回值

如果正在載入屬性,則為非零;否則為 0。

另請參閱

階層架構圖表
COleControl::D oPropExchange