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
可用來串行化控件的屬性,或在載入或建立控件時初始化控件的屬性。 的 ExchangeProp
和 ExchangeFontProp
成員函式 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::ExchangeBlobProp
、 CResetPropExchange::ExchangeBlobProp
和 CPropsetPropExchange::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::ExchangeFontProp
、 CResetPropExchange::ExchangeFontProp
和 CPropsetPropExchange::ExchangeFontProp
會覆寫這個純虛擬函式。
CPropExchange::ExchangePersistentProp
在控件與檔案之間交換 屬性。
virtual BOOL ExchangePersistentProp(
LPCTSTR pszPropName,
LPUNKNOWN* ppUnk,
REFIID iid,
LPUNKNOWN pUnkDefault) = 0;
參數
pszPropName
要交換之屬性的名稱。
ppUnk
變數的指標,其中包含屬性介面的 IUnknown
指標(這個變數通常是類別的成員)。
iid
控制件將使用之 屬性上的介面介面識別碼。
pUnkDefault
屬性的預設值。
傳回值
如果交換成功,則為非零;如果失敗,則為 0。
備註
如果屬性是從檔案載入至 控件,則會從檔案建立並初始化 屬性。 如果正在儲存屬性,則會將其值寫入檔案。
函式 CArchivePropExchange::ExchangePersistentProp
、 CResetPropExchange::ExchangePersistentProp
和 CPropsetPropExchange::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::ExchangeProp
、 CResetPropExchange::ExchangeProp
和 CPropsetPropExchange::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。