COleVariant 類別
封裝 VARIANT 資料類型。
語法
class COleVariant : public tagVARIANT
成員
公用建構函式
名稱 | 描述 |
---|---|
COleVariant::COleVariant | 建構 COleVariant 物件。 |
公用方法
名稱 | 描述 |
---|---|
COleVariant::Attach | 將 VARIANT 附加至 COleVariant 。 |
COleVariant::ChangeType | 變更這個 COleVariant 物件的變體類型。 |
COleVariant::Clear | 清除這個 COleVariant 物件。 |
COleVariant::D etach | 從 COleVariant 中斷連結 VARIANT,並傳回 VARIANT。 |
COleVariant::GetByteArrayFromVariantArray | 從現有的變數組擷取位元組陣列。 |
COleVariant::SetString | 將字串設定為特定類型,通常是 ANSI。 |
公用運算子
名稱 | 描述 |
---|---|
COleVariant::operator LPCVARIANT | 將 COleVariant 值轉換成 LPCVARIANT 。 |
COleVariant::operator LPVARIANT | 將 COleVariant 物件轉換成 LPVARIANT 。 |
COleVariant::operator = | COleVariant 複製值。 |
COleVariant::operator == | 比較兩個 COleVariant 值。 |
COleVariant::operator << , COleVariant::operator >> |
將 COleVariant 值輸出至 CArchive 或 CDumpContext ,並從 中輸入 COleVariant 物件 CArchive 。 |
備註
此數據類型用於 OLE 自動化。 具體而言, DISPPARAMS 結構包含 VARIANT 結構的數位指標。 DISPPARAMS
結構可用來將參數傳遞至 IDispatch::Invoke。
注意
這個類別衍生自 VARIANT
結構。 這表示您可以在呼叫 VARIANT
的參數中傳遞 COleVariant
,而且 結構的數據成員VARIANT
是的可存取數據成員COleVariant
。
COleCurrency 和 COleDateTime 這兩個相關的 MFC 類別會封裝 VARIANT 數據類型 CURRENCY (VT_CY
) 和 DATE ( VT_DATE
。 類別 COleVariant
在 DAO 類別中廣泛使用;如需此類別的典型用法,請參閱這些類別,例如 CDaoQueryDef 和 CDaoRecordset。
如需詳細資訊,請參閱 Windows SDK 中的 VARIANT、 CURRENCY、 DISPPARAMS 和 IDispatch::Invoke 專案。
如需 類別COleVariant
及其在 OLE 自動化中使用的詳細資訊,請參閱自動化一文中的<傳遞 OLE 自動化中的參數>。
繼承階層架構
tagVARIANT
COleVariant
需求
標頭: afxdisp.h
COleVariant::Attach
呼叫此函式,將指定的 VARIANT 物件附加至目前的 COleVariant
物件。
void Attach(VARIANT& varSrc);
參數
varSrc
要附加至目前COleVariant
對象的現有VARIANT
物件。
備註
此函式會將 varSrc 的 VARTYPE 設定為 VT_EMPTY。
如需詳細資訊,請參閱 Windows SDK 中的 VARIANT 和 VARENUM 專案。
COleVariant::COleVariant
建構 COleVariant
物件。
COleVariant();
COleVariant(const VARIANT& varSrc);
COleVariant(const COleVariant& varSrc);
COleVariant(LPCVARIANT pSrc);
COleVariant(LPCTSTR lpszSrc);
COleVariant(LPCTSTR lpszSrc, VARTYPE vtSrc);
COleVariant(CString& strSrc);
COleVariant(BYTE nSrc);
COleVariant(short nSrc, VARTYPE vtSrc = VT_I2);
COleVariant(long lSrc,VARTYPE vtSrc = VT_I4);
COleVariant(const COleCurrency& curSrc);
COleVariant(float fltSrc);
COleVariant(double dblSrc);
COleVariant(const COleDateTime& timeSrc);
COleVariant(const CByteArray& arrSrc);
COleVariant(const CLongBinary& lbSrc);
COleVariant(LPCITEMIDLIST pidl);
參數
varSrc
要複製到新COleVariant
物件的現有 COleVariant
或 VARIANT
物件。
pSrc
將複製到新COleVariant
物件之物件的指標VARIANT
。
lpszSrc
要複製到新 COleVariant
物件的 Null 終止字串。
vtSrc
VARTYPE
新 COleVariant
物件的 。
strSrc
要複製到新COleVariant
物件的 CString 物件。
nSrc、lSrc 要複製到新COleVariant
物件的數值。
vtSrc
VARTYPE
新 COleVariant
物件的 。
curSrc
要複製到新COleVariant
物件的 COleCurrency 物件。
fltSrc、 dblSrc
要複製到新的 COleVariant
物件中的數值。
timeSrc
要複製到新COleVariant
物件的 COleDateTime 物件。
arrSrc
要複製到新COleVariant
物件的 CByteArray 物件。
lbSrc
要複製到新COleVariant
物件的 CLongBinary 物件。
pidl
要複製到新COleVariant
物件之 ITEMIDLIST 結構的指標。
備註
所有這些建構函式都會建立初始化為指定值的新 COleVariant
物件。 下列每個建構函式的簡短描述。
COleVariant( ) 建立空
COleVariant
的物件,VT_EMPTY。COleVariant(varSrc ) 複製現有的
VARIANT
或COleVariant
物件。 variant 類型會保留。COleVariant(pSrc ) 複製現有的
VARIANT
或COleVariant
物件。 variant 類型會保留。COleVariant(lpszSrc) 將字串複製到新的物件,VT_BSTR (UNICODE)。
COleVariant(lpszSrc , vtSrc ) 將字串複製到新的 物件中。 vtSrc 參數必須VT_BSTR (UNICODE) 或 VT_BSTRT (ANSI)。
COleVariant(strSrc) 將字串複製到新的物件,VT_BSTR (UNICODE)。
COleVariant( nSrc ) 將 8 位整數複製到新的 物件,VT_UI1。
COleVariant(nSrc 、 vtSrc ) 會將 16 位整數(或布爾值)複製到新的 物件。 參數 vtSrc 必須VT_I2或VT_BOOL。
COleVariant(lSrc 、 vtSrc ) 會將 32 位整數(或 SCODE 值)複製到新的 物件中。 vtSrc 參數必須是VT_I4、VT_ERROR或VT_BOOL。
COleVariant(curSrc) 會將值複製到
COleCurrency
新的物件中,VT_CY。COleVariant(fltSrc ) 將 32 位浮點值複製到新的 物件,VT_R4。
COleVariant(dblSrc) 會將 64 位浮點值複製到新的 物件,VT_R8。
COleVariant(timeSrc ) 將值複製到
COleDateTime
新的 物件中,VT_DATE。COleVariant(arrSrc ) 將物件複製到
CByteArray
新的物件,VT_EMPTY。COleVariant( lbSrc ) 將物件複製到
CLongBinary
新的 物件,VT_EMPTY。
如需 SCODE 的詳細資訊,請參閱 Windows SDK 中的 COM 錯誤碼 結構。
COleVariant::ChangeType
轉換這個 COleVariant
物件中的 Variant 值類型。
void ChangeType(VARTYPE vartype, LPVARIANT pSrc = NULL);
參數
vartype
這個 COleVariant
物件的 VARTYPE。
pSrc
要轉換之 VARIANT 物件的指標。 如果此值為 NULL,此 COleVariant
物件會作為轉換的來源。
備註
如需詳細資訊,請參閱 Windows SDK 中的 VARIANT、 VARENUM 和 VariantChangeType 專案。
COleVariant::Clear
清除 VARIANT
。
void Clear();
備註
這會將這個物件的 VARTYPE 設定為VT_EMPTY。 解構函式會 COleVariant
呼叫此函式。
如需詳細資訊,請參閱 VARIANT
Windows SDK 中的 、VARTYPE 和 VariantClear
專案。
COleVariant::D etach
將基礎 VARIANT 對象與這個 COleVariant
物件中斷連結。
VARIANT Detach();
備註
此函式會將這個 COleVariant
物件的 VARTYPE 設定為VT_EMPTY。
注意
呼叫 Detach
之後,呼叫端負責呼叫 VariantClear
產生的 VARIANT
結構。
如需詳細資訊,請參閱 Windows SDK 中的 VARIANT、 VARENUM 和 VariantClear 專案。
COleVariant::GetByteArrayFromVariantArray
從現有的變數組擷取位元組陣列
void GetByteArrayFromVariantArray(CByteArray& bytes);
參數
bytes
現有 CByteArray 物件的參考。
COleVariant::operator LPCVARIANT
這個轉換運算符會 VARIANT
傳回結構,其值會從這個 COleVariant
物件複製。
operator LPCVARIANT() const;
備註
COleVariant::operator LPVARIANT
呼叫這個轉換運算符,以存取這個COleVariant
對象的基礎VARIANT
結構。
operator LPVARIANT();
備註
警告
變更此函式所傳回之指標所存取之結構中的 VARIANT
值,將會變更這個 COleVariant
物件的值。
COleVariant::operator =
這些多載指派運算符會將來源值複製到這個 COleVariant
物件中。
const COleVariant& operator=(const VARIANT& varSrc);
const COleVariant& operator=(LPCVARIANT pSrc);
const COleVariant& operator=(const COleVariant& varSrc);
const COleVariant& operator=(const LPCTSTR lpszSrc);
const COleVariant& operator=(const CString& strSrc);
const COleVariant& operator=(BYTE nSrc);
const COleVariant& operator=(short nSrc);
const COleVariant& operator=(long lSrc);
const COleVariant& operator=(const COleCurrency& curSrc);
const COleVariant& operator=(float fltSrc);
const COleVariant& operator=(double dblSrc);
const COleVariant& operator=(const COleDateTime& dateSrc);
const COleVariant& operator=(const CByteArray& arrSrc);
const COleVariant& operator=(const CLongBinary& lbSrc);
備註
每個運算子的簡短描述如下:
operator =( varSrc ) 將現有的 VARIANT 或
COleVariant
物件複製到這個物件中。operator =( pSrc ) 將 pSrc 存取的 VARIANT 物件複製到這個物件。
operator =( lpszSrc ) 將 null 終止的字串複製到這個物件,並將 VARTYPE 設定為 VT_BSTR。
operator =( strSrc ) 將 CString 物件複製到這個物件,並將 VARTYPE 設定為VT_BSTR。
operator =( nSrc ) 將 8 位或 16 位整數值複製到這個物件。 如果 nSrc 是 8 位值,則這個 的 VARTYPE 會設定為 VT_UI1。 如果 nSrc 是 16 位值,且此 的 VARTYPE 是VT_BOOL,則會保留,否則會設定為 VT_I2。
operator =( lSrc ) 將 32 位整數值複製到這個物件。 如果此 的 VARTYPE 是VT_ERROR,則會保留它;否則,它會設定為 VT_I4。
operator =( curSrc ) 將 COleCurrency 物件複製到這個物件,並將 VARTYPE 設定為 VT_CY。
operator =( fltSrc ) 將 32 位浮點值複製到這個物件,並將 VARTYPE 設定為VT_R4。
operator =( dblSrc ) 將 64 位浮點值複製到這個物件,並將 VARTYPE 設定為VT_R8。
operator =( dateSrc ) 將 COleDateTime 物件複製到這個物件,並將 VARTYPE 設定為VT_DATE。
operator =( arrSrc ) 將 CByteArray 物件複製到這個
COleVariant
物件。operator =( lbSrc ) 將 CLongBinary 物件複製到這個
COleVariant
物件中。
如需詳細資訊,請參閱 Windows SDK 中的 VARIANT 和 VARENUM 專案。
COleVariant::operator ==
這個運算符會比較兩個變異值,如果相等,則會傳回非零值;否則為 0。
BOOL operator==(const VARIANT& varSrc) const;
BOOL operator==(LPCVARIANT pSrc) const;
COleVariant::operator <<
, COleVariant::operator >>
將 COleVariant
值輸出至 CArchive
或 CdumpContext
,並從 中輸入 COleVariant
物件 CArchive
。
friend CDumpContext& AFXAPI operator<<(
CDumpContext& dc,
OleVariant varSrc);
friend CArchive& AFXAPI operator<<(
CArchive& ar,
COleVariant varSrc);
friend CArchive& AFXAPI operator>>(
CArchive& ar,
COleVariant& varSrc);
備註
COleVariant
插入 (<<) 運算子支援診斷傾印和儲存至封存。 擷取 (>>) 運算子支援從封存載入。
COleVariant::SetString
將字串設定為特定類型。
void SetString(LPCTSTR lpszSrc, VARTYPE vtSrc);
參數
lpszSrc
要複製到新 COleVariant
物件的 Null 終止字串。
VtSrc
新 COleVariant
物件的 VARTYPE。
備註
vtSrc 參數必須VT_BSTR (UNICODE) 或 VT_BSTRT (ANSI)。 SetString
通常用來將字串設定為 ANSI,因為 COleVariant::COleVariant 建構函式具有字串或字串指標參數的預設值,而且沒有 VARTYPE 是 UNICODE。
非 UNICODE 組建中的 DAO 記錄集預期字串為 ANSI。 因此,對於使用COleVariant
物件的 DAO 函式,如果您未建立 UNICODE 記錄集,則必須使用 COleVariant::COleVariant(lpszSrc , vtSrc) 形式的建構函式,並將 vtSrc 設定為 VT_BSTRT (ANSI) 或搭配 SetString
vtSrc 設定為 VT_BSTRT 來建立 ANSI 字串串。 例如,CDaoRecordset
CDaoRecordset::Seek 和 CDaoRecordset::SetFieldValue 函式會使用 COleVariant
對象作為參數。 如果 DAO 記錄集不是 UNICODE,這些對象必須是 ANSI。