封裝 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 結構。 這表示您可以在呼叫 COleVariant 的參數中傳遞 VARIANT ,而且 結構的數據成員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
要附加至目前VARIANT對象的現有COleVariant物件。
備註
此函式會將 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物件的現有 VARIANT 或 COleVariant 物件。
pSrc
將複製到新VARIANT物件之物件的指標COleVariant。
lpszSrc
要複製到新 COleVariant 物件的 Null 終止字串。
vtSrc
VARTYPE新 COleVariant 物件的 。
nSrc、lSrc 要複製到新COleVariant物件的數值。
vtSrc
VARTYPE新 COleVariant 物件的 。
fltSrc、 dblSrc
要複製到新的 COleVariant 物件中的數值。
pidl
要複製到新物件之 ITEMIDLISTCOleVariant。
備註
所有這些建構函式都會建立初始化為指定值的新 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 呼叫此函式。
如需詳細資訊,請參閱 VARIANTWindows 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);
參數
位元組
現有 CByteArray 物件的參考。
COleVariant::operator LPCVARIANT
這個轉換運算符會 VARIANT 傳回結構,其值會從這個 COleVariant 物件複製。
operator LPCVARIANT() const;
備註
COleVariant::operator LPVARIANT
呼叫這個轉換運算符,以存取這個VARIANT對象的基礎COleVariant結構。
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) 或搭配 SetStringvtSrc 設定為 VT_BSTRT 來建立 ANSI 字串串。 例如,CDaoRecordsetCDaoRecordset::Seek 和 CDaoRecordset::SetFieldValue 函式會使用 COleVariant 對象作為參數。 如果 DAO 記錄集不是 UNICODE,這些對象必須是 ANSI。