共用方式為


CComVariant 類別

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

語法

class CComVariant : public tagVARIANT

成員

公用建構函式

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

公用方法

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

公用運算子

Operator 描述
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配置的 UnicodeBSTR。 物件的類型 CComVariantVT_BSTR

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

nSrc
[in]intshortBYTE、、、longunsigned shortULONGLONGLONGLONG、、、 unsigned long或 ,用來unsigned int初始化 CComVariant 物件。 物件的類型CComVariant分別為VT_I4VT_UI1VT_I2、、VT_I4VT_I8VT_UI8VT_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配置的 UnicodeBSTR。 物件的類型 CComVariantVT_BSTR

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

nSrc
[in]int要指定給 CComVariant 物件的、BYTEshortlong、、、、unsigned shortULONGLONGLONGLONGunsigned long 或 。 unsigned int 物件的類型CComVariant分別為VT_I4VT_UI1VT_I2、、VT_I4VT_I8VT_UI8VT_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 值。

另請參閱

類別概觀