共用方式為


CComVariant 類別

這個類別會 VARIANT 包裝型別,並提供指出所儲存資料類型的成員。

語法

class CComVariant : public tagVARIANT

成員

公用建構函式

名稱 描述
CComVariant::CComVariant 建構函式。
CComVariant::~CComVariant 解構函式。

公用方法

名稱 描述
CComVariant::Attach VARIANT將 附加至 CComVariant 物件。
CComVariant::ChangeType CComVariant 物件轉換成新的類型。
CComVariant::Clear 清除 CComVariant 物件。
CComVariant::Copy VARIANTCComVariant 複製到 物件。
CComVariant::CopyTo 複製 物件的內容 CComVariant
CComVariant::Detach 將基礎 VARIANT 與 物件中斷 CComVariant 連結。
CComVariant::GetSize 傳回物件內容 CComVariant 位元組數的大小。
CComVariant::ReadFromStream VARIANT從資料流程載入 。
CComVariant::SetByRef 初始化 物件, CComVariant 並將成員設定 vtVT_BYREF
CComVariant::WriteToStream 將基礎 VARIANT 儲存至資料流程。

公用運算子

運算子 描述
CComVariant::operator < 指出 物件是否 CComVariant 小於指定的 VARIANT
CComVariant::operator > 指出物件是否 CComVariant 大於指定的 VARIANT
CComVariant::operator != 指出 物件是否 CComVariant 不等於指定的 VARIANT
CComVariant::operator = 將值指派給 CComVariant 物件。
CComVariant::operator == 指出 物件是否 CComVariant 等於指定的 VARIANT

備註

CComVariant 包裝 VARIANTVARIANTARG 類型,其中包含聯集和成員,指出儲存在等位中的資料類型。 VARIANTs 通常用於自動化。

CComVariant 衍生自 VARIANT 型別,以便在可以使用的位置 VARIANT 使用。 例如, V_VT 您可以使用 宏來擷取 的 CComVariant 型別,也可以直接存取 vt 成員,就像使用 VARIANT 一樣。

繼承階層

tagVARIANT
 └ CComVariant

需求

標頭:atlcomcli.h

CComVariant::Attach

保管庫清除物件的目前內容 CComVariant 、將 的內容 pSrc 複製到這個物件中,然後將 的 pSrc variant 類型設定為 VT_EMPTY

HRESULT Attach(VARIANT* pSrc);

參數

pSrc
[in] VARIANT 指向要附加至 物件的 。

傳回值

標準 HRESULT 值。

備註

所持有 pSrc 資料的擁有權會傳送至 CComVariant 物件。

CComVariant::CComVariant

每個建構函式會呼叫 VariantInit Win32 函式,或根據傳遞的參數設定物件的值和類型,來處理物件的安全初始化 CComVariant

CComVariant() throw();
CComVariant(const CComVariant& varSrc);
CComVariant(const VARIANT& varSrc);
CComVariant(LPCOLESTR lpszSrc);
CComVariant(LPCSTR lpszSrc);
CComVariant(bool bSrc);
CComVariant(BYTE nSrc) throw();
CComVariant(int nSrc, VARTYPE vtSrc = VT_I4) throw();
CComVariant(unsigned int  nSrc, VARTYPE vtSrc = VT_UI4) throw();
CComVariant(shor  nSrc) throw();
CComVariant(unsigned short nSrc) throw();
CComVariant(long  nSrc, VARTYPE vtSrc = VT_I4) throw();
CComVariant(unsigned long  nSrc) throw();
CComVariant(LONGLONG  nSrc) throw();
CComVariant(ULONGLONG  nSrc) throw();
CComVariant(float  fltSrc) throw();
CComVariant(double  dblSrc, VARTYPE vtSrc = VT_R8) throw();
CComVariant(CY  cySrc) throw();
CComVariant(IDispatch* pSrc) throw();
CComVariant(IUnknown* pSrc) throw();
CComVariant(const SAFEARRAY* pSrc);
CComVariant(char  cSrc) throw();
CComVariant(const CComBSTR& bstrSrc);

參數

varSrc
[in] CComVariant 或 ,用來 VARIANT 初始化 CComVariant 物件。 來源變體的內容會複製到目的地,而不需要轉換。

lpszSrc
[in]用來初始化 CComVariant 物件的字元字串。 您可以將以零終止的寬字元字串 (Unicode) 字元字串傳遞至 LPCOLESTR 建構函式的版本或 ANSI 字串至 LPCSTR 版本。 不論是哪一種情況,字串會轉換成使用 SysAllocString 配置的 Unicode BSTR 。 物件的類型 CComVariantVT_BSTR

bSrc
[in] bool 用來初始化 CComVariant 物件的 。 自 bool 變數會在 VARIANT_BOOL 儲存之前轉換為 。 物件的類型 CComVariantVT_BOOL

nSrc
[in]intshortBYTE 、、 longLONGLONGunsigned shortULONGLONG 、、、 unsigned long 或 ,用來 unsigned int 初始化 CComVariant 物件。 物件的類型 CComVariant 分別為 VT_I4VT_UI1VT_I2VT_I4VT_I8VT_UI8 、、 VT_UI2VT_UI4VT_UI4

vtSrc
[in]變體的類型。 當第一個參數為 int 時,有效的型別為 VT_I4VT_INT 。 當第一個參數為 long 時,有效的型別為 VT_I4VT_ERROR 。 當第一個參數為 double 時,有效的型別為 VT_R8VT_DATE 。 當第一個參數為 unsigned int 時,有效的型別為 VT_UI4VT_UINT

fltSrc
[in] float 用來初始化 CComVariant 物件的 。 物件的類型 CComVariantVT_R4

dblSrc
[in] double 用來初始化 CComVariant 物件的 。 物件的類型 CComVariantVT_R8

cySrc
[in] CY 用來初始化 CComVariant 物件的 。 物件的類型 CComVariantVT_CY

pSrc
[in]用來 IDispatch 初始化 CComVariant 物件的 或 IUnknown 指標。 AddRef 在介面指標上呼叫 。 物件的 VT_DISPATCH 類型 CComVariant 分別為 或 VT_UNKNOWN

或者, SAFERRAY 用來初始化 CComVariant 物件的指標。 的 SAFEARRAY 複本會儲存在 物件中 CComVariant 。 物件的型 CComVariant 別是 和 VT_ARRAY 的原始型 SAFEARRAY 別組合。

cSrc
[in] char 用來初始化 CComVariant 物件的 。 物件的類型 CComVariantVT_I1

bstrSrc
[in] BSTR 用來初始化 CComVariant 物件的 。 物件的類型 CComVariantVT_BSTR

備註

解構函式會藉由呼叫 CComVariant::Clear 來管理清除。

CComVariant::~CComVariant

解構函式。

~CComVariant() throw();

備註

這個方法會藉由呼叫 CComVariant::Clear 來管理清除。

CComVariant::ChangeType

CComVariant 物件轉換成新的類型。

HRESULT ChangeType(VARTYPE vtNew, const VARIANT* pSrc = NULL);

參數

vtNew
[in]物件的新型別 CComVariant

pSrc
[in]的指標 VARIANT ,其值會轉換成新型別。 預設值為 NULL ,表示 CComVariant 物件已就地轉換。

傳回值

標準 HRESULT 值。

備註

如果您傳遞 的值 pSrcChangeType 則會使用此值 VARIANT 作為轉換的來源。 否則,物件 CComVariant 就是來源。

CComVariant::Clear

CComVariant呼叫 VariantClear Win32 函式以清除物件。

HRESULT Clear();

傳回值

標準 HRESULT 值。

備註

解構函式會自動呼叫 Clear

CComVariant::Copy

CComVariant釋放 物件,然後將指定的 VARIANT 複本指派給它。

HRESULT Copy(const VARIANT* pSrc);

參數

pSrc
[in]要複製之 VARIANT 的指標。

傳回值

標準 HRESULT 值。

CComVariant::CopyTo

複製 物件的內容 CComVariant

HRESULT CopyTo(BSTR* pstrDest);

參數

pstrDest
BSTR指向將接收 物件內容複本的 CComVariant

傳回值

標準 HRESULT 值。

備註

物件 CComVariant 必須是 類型 VT_BSTR

CComVariant::Detach

將基礎 VARIANT 與 物件中斷連結, CComVariant 並將 物件的類型設定為 VT_EMPTY

HRESULT Detach(VARIANT* pDest);

參數

pDest
[out]傳回 物件的基礎 VARIANT 值。

傳回值

標準 HRESULT 值。

備註

在指派呼叫 CComVariant 物件的值和類型之前,會自動清除 所參考 pDest 的內容 VARIANT

CComVariant::GetSize

若為簡單固定大小 VARIANT ,這個方法會 sizeof 傳回基礎資料類型的值加上 sizeof(VARTYPE)

ULONG GetSize() const;

傳回值

物件目前內容的 CComVariant 位元組大小。

備註

VARIANT如果 包含介面指標,則 GetSize 查詢 IPersistStreamIPersistStreamInit 。 如果成功,傳回值是加 號 sizeof(CLSID)sizeof(VARTYPE) 所傳回 GetSizeMax 之值的低序 32 位。 如果介面指標為 NULL ,則會傳 sizeof(CLSID) 回 加上 sizeof(VARTYPE)GetSize 。 如果總大小大於 ULONG_MAXGetSize 則會傳 sizeof(VARTYPE) 回 ,表示錯誤。

在其他所有情況下,類型的 VT_BSTR 暫存 VARIANT 會從目前的 VARIANT 強制處理。 此長度 BSTR 的計算方式是字串長度加上字串本身的長度加上字元大小加上 字元大小 NULLsizeof(VARTYPE) VARIANT如果 無法強制套用至 VARIANTVT_BSTR 別 的 , GetSize 則會傳 sizeof(VARTYPE) 回 。

這個方法傳回的大小符合成功條件下所使用的 CComVariant::WriteToStream 位元組數目。

CComVariant::operator =

將值和對應的型別指派給 CComVariant 物件。

CComVariant& operator=(const CComVariant& varSrc);
CComVariant& operator=(const VARIANT& varSrc);
CComVariant& operator=(const CComBSTR& bstrSrc);
CComVariant& operator=(LPCOLESTR lpszSrc);
CComVariant& operator=(LPCSTR lpszSrc);
CComVariant& operator=(bool bSrc);
CComVariant& operator=(BYTE nSrc) throw();
CComVariant& operator=int nSrc) throw();
CComVariant& operator=(unsigned int nSrc) throw();
CComVariant& operator=(short nSrc) throw();
CComVariant& operator=(unsigned short nSrc) throw();
CComVariant& operator=(long nSrc) throw();
CComVariant& operator=(unsigned long nSrc) throw();
CComVariant& operator=(LONGLONG nSrc) throw();
CComVariant& operator=(ULONGLONG nSrc) throw();
CComVariant& operator=(float fltSrc) throw();
CComVariant& operator=(double dblSrc) throw();
CComVariant& operator=(CY cySrc) throw();
CComVariant& operator=(IDispatch* pSrc) throw();
CComVariant& operator=(IUnknown* pSrc) throw();
CComVariant& operator=(const SAFEARRAY* pSrc);
CComVariant& operator=(char cSrc) throw();

參數

varSrc
[in]要 CComVariant 指派給 CComVariant 物件的 或 VARIANT 。 來源變體的內容會複製到目的地,而不需要轉換。

bstrSrc
[in] BSTR 要指派給 CComVariant 物件的 。 物件的類型 CComVariantVT_BSTR

lpszSrc
[in]要指派給 CComVariant 物件的字元字串。 您可以將以零終止的寬字元字串 (Unicode) 字元字串傳遞至 LPCOLESTR 運算子的版本,或將 ANSI 字串傳遞至 LPCSTR 版本。 不論是哪一種情況,字串會轉換成使用 SysAllocString 配置的 Unicode BSTR 。 物件的類型 CComVariantVT_BSTR

bSrc
[in] bool 要指派給 CComVariant 物件的 。 自 bool 變數會在 VARIANT_BOOL 儲存之前轉換為 。 物件的類型 CComVariantVT_BOOL

nSrc
[in]int要指派給 CComVariant 物件的 、 BYTEshortlongunsigned shortLONGLONGULONGLONG 、、、 unsigned longunsigned int 。 物件的類型 CComVariant 分別為 VT_I4VT_UI1VT_I2VT_I4VT_I8VT_UI8 、、 VT_UI2VT_UI4VT_UI4

fltSrc
[in] float 要指派給 CComVariant 物件的 。 物件的類型 CComVariantVT_R4

dblSrc
[in] double 要指派給 CComVariant 物件的 。 物件的類型 CComVariantVT_R8

cySrc
[in] CY 要指派給 CComVariant 物件的 。 物件的類型 CComVariantVT_CY

pSrc
[in]要 IDispatch 指派給 CComVariant 物件的 或 IUnknown 指標。 AddRef 在介面指標上呼叫 。 物件的 VT_DISPATCH 類型 CComVariant 分別為 或 VT_UNKNOWN

或者, SAFEARRAY 要指派給 CComVariant 物件的指標。 的 SAFEARRAY 複本會儲存在 物件中 CComVariant 。 物件的型 CComVariant 別是 和 VT_ARRAY 的原始型 SAFEARRAY 別組合。

cSrc
[in]要指派給 CComVariant 物件的 char。 物件的類型 CComVariantVT_I1

CComVariant::operator ==

指出 物件是否 CComVariant 等於指定的 VARIANT

bool operator==(const VARIANT& varSrc) const throw();

備註

TRUE如果 的值和型 varSrc 別分別等於 物件的值和型別, CComVariant 則傳回 。 否則為 FALSE。 運算子會使用使用者的預設地區設定來執行比較。

運算子只會比較 Variant 類型的值。 它會比較字串、整數和浮點數,但不會比較陣列或記錄。

CComVariant::operator !=

指出 物件是否 CComVariant 不等於指定的 VARIANT

bool operator!=(const VARIANT& varSrc) const throw();

備註

TRUE如果 的值或型 varSrc 別不等於 物件的值或型別, CComVariant 則傳回 。 否則為 FALSE。 運算子會使用使用者的預設地區設定來執行比較。

運算子只會比較 Variant 類型的值。 它會比較字串、整數和浮點數,但不會比較陣列或記錄。

CComVariant::operator <

指出 物件是否 CComVariant 小於指定的 VARIANT

bool operator<(const VARIANT& varSrc) const throw();

備註

如果 物件的值 CComVariant 小於 的值 varSrc ,則傳 TRUE 回 。 否則為 FALSE。 運算子會使用使用者的預設地區設定來執行比較。

CComVariant::operator >

指出物件是否 CComVariant 大於指定的 VARIANT

bool operator>(const VARIANT& varSrc) const throw();

備註

如果 物件的值 CComVariant 大於 的值 varSrc ,則傳 TRUE 回 。 否則為 FALSE。 運算子會使用使用者的預設地區設定來執行比較。

CComVariant::ReadFromStream

將基礎 VARIANT 設定為 VARIANT 指定資料流程中包含的 。

HRESULT ReadFromStream(IStream* pStream);

參數

pStream
[in]資料流程上介面的 IStream 指標,其中包含資料。

傳回值

標準 HRESULT 值。

備註

ReadToStream 需要先前對 WriteToStream 的呼叫。

CComVariant::SetByRef

初始化 物件, CComVariant 並將成員設定 vtVT_BYREF

template < typename T >
void SetByRef(T* pT) throw();

參數

T
VARIANT 型別,例如 、 BSTRintchar

pT
用來初始化 CComVariant 物件的指標。

備註

SetByRef 是函式範本,會將 物件初始化 CComVariant 為指標 pT ,並將成員設定 vtVT_BYREF 。 例如:

CComVariant var;
int nData = 10;
var.SetByRef(&nData);   

CComVariant::WriteToStream

將基礎 VARIANT 儲存至資料流程。

HRESULT WriteToStream(IStream* pStream);

參數

pStream
[in]資料流程上介面的 IStream 指標。

傳回值

標準 HRESULT 值。

另請參閱

類別概觀