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 並將成員設定 vt 為 VT_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
包裝 VARIANT
和 VARIANTARG
類型,其中包含聯集和成員,指出儲存在等位中的數據類型。 VARIANT
s 通常用於自動化。
CComVariant
衍生自 VARIANT
型別,以便在可以使用的位置 VARIANT
使用。 例如, V_VT
您可以使用 巨集來擷取的 CComVariant
型別,也可以直接存取 vt
成員,就像使用 VARIANT
一樣。
繼承階層
需求
標頭: 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
。 物件的類型 CComVariant
為 VT_BSTR
。
bSrc
[in] bool
用來初始化 CComVariant
物件的 。 自 bool
變數會在 VARIANT_BOOL
儲存之前轉換為 。 物件的類型 CComVariant
為 VT_BOOL
。
nSrc
[in]int
、short
BYTE
、、、long
、unsigned short
ULONGLONG
LONGLONG
、、、 unsigned long
或 ,用來unsigned int
初始化 CComVariant
物件。 物件的類型CComVariant
分別為VT_I4
、VT_UI1
、VT_I2
、、VT_I4
VT_I8
、VT_UI8
、VT_UI2
、 VT_UI4
或 VT_UI4
。
vtSrc
[in]變體的類型。 當第一個參數為 int
時,有效的型別為 VT_I4
和 VT_INT
。 當第一個參數為 long
時,有效的型別為 VT_I4
和 VT_ERROR
。 當第一個參數為 double
時,有效的型別為 VT_R8
和 VT_DATE
。 當第一個參數為 unsigned int
時,有效的型別為 VT_UI4
和 VT_UINT
。
fltSrc
[in] float
用來初始化 CComVariant
物件的 。 物件的類型 CComVariant
為 VT_R4
。
dblSrc
[in] double
用來初始化 CComVariant
物件的 。 物件的類型 CComVariant
為 VT_R8
。
cySrc
[in] CY
用來初始化 CComVariant
物件的 。 物件的類型 CComVariant
為 VT_CY
。
pSrc
[in]用來IDispatch
初始化 CComVariant
物件的 或 IUnknown
指標。 AddRef
在介面指標上呼叫 。 物件的VT_DISPATCH
類型CComVariant
分別為 或 VT_UNKNOWN
。
或者, SAFERRAY
用來初始化 CComVariant
物件的指標。 的 SAFEARRAY
複本會儲存在物件中 CComVariant
。 物件的型CComVariant
別是 和VT_ARRAY
的原始型SAFEARRAY
別組合。
cSrc
[in] char
用來初始化 CComVariant
物件的 。 物件的類型 CComVariant
為 VT_I1
。
bstrSrc
[in] BSTR
用來初始化 CComVariant
物件的 。 物件的類型 CComVariant
為 VT_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
值。
備註
如果您傳遞的值 pSrc
, ChangeType
則會使用此值 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
查詢 IPersistStream
或 IPersistStreamInit
。 如果成功,傳回值是加 號 sizeof(CLSID)
和 sizeof(VARTYPE)
所傳回GetSizeMax
之值的低序 32 位。 如果介面指標為 NULL
,則會傳sizeof(CLSID)
回 加上 sizeof(VARTYPE)
GetSize
。 如果總大小大於 ULONG_MAX
, GetSize
則會傳 sizeof(VARTYPE)
回 ,表示錯誤。
在其他所有情況下,類型的VT_BSTR
暫存VARIANT
會從目前的 VARIANT
強制處理。 此長度BSTR
的計算方式是字串長度加上字串本身的長度加上字元大小加上 字元大小NULL
。sizeof(VARTYPE)
VARIANT
如果 無法強制套用至 VARIANT
型VT_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
物件的 。 物件的類型 CComVariant
為 VT_BSTR
。
lpszSrc
[in]要指派給 CComVariant
物件的字元字串。 您可以將以零終止的寬字元字串 (Unicode) 字元字串傳遞至 LPCOLESTR
運算符的版本,或將 ANSI 字串傳遞至 LPCSTR
版本。 不論是哪一種情況,字串會轉換成使用 SysAllocString
配置的 UnicodeBSTR
。 物件的類型 CComVariant
為 VT_BSTR
。
bSrc
[in] bool
要指定給 CComVariant
物件的 。 自 bool
變數會在 VARIANT_BOOL
儲存之前轉換為 。 物件的類型 CComVariant
為 VT_BOOL
。
nSrc
[in]int
要指定給 CComVariant
物件的、BYTE
short
、long
、、、、unsigned short
ULONGLONG
LONGLONG
unsigned long
或 。 unsigned int
物件的類型CComVariant
分別為VT_I4
、VT_UI1
、VT_I2
、、VT_I4
VT_I8
、VT_UI8
、VT_UI2
、 VT_UI4
或 VT_UI4
。
fltSrc
[in] float
要指定給 CComVariant
物件的 。 物件的類型 CComVariant
為 VT_R4
。
dblSrc
[in] double
要指定給 CComVariant
物件的 。 物件的類型 CComVariant
為 VT_R8
。
cySrc
[in] CY
要指定給 CComVariant
物件的 。 物件的類型 CComVariant
為 VT_CY
。
pSrc
[in]要IDispatch
指派給 CComVariant
物件的 或 IUnknown
指標。 AddRef
在介面指標上呼叫 。 物件的VT_DISPATCH
類型CComVariant
分別為 或 VT_UNKNOWN
。
或者, SAFEARRAY
要指派給 CComVariant
物件的指標。 的 SAFEARRAY
複本會儲存在物件中 CComVariant
。 物件的型CComVariant
別是 和VT_ARRAY
的原始型SAFEARRAY
別組合。
cSrc
[in]要指派給 CComVariant
物件的 char。 物件的類型 CComVariant
為 VT_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
並將成員設定 vt
為 VT_BYREF
。
template < typename T >
void SetByRef(T* pT) throw();
參數
T
的VARIANT
型別,例如 、 BSTR
int
或 char
。
pT
用來初始化 CComVariant
物件的指標。
備註
SetByRef
是函式範本,會將 物件初始化 CComVariant
為指標 pT
,並將成員設定 vt
為 VT_BYREF
。 例如:
CComVariant var;
int nData = 10;
var.SetByRef(&nData);
CComVariant::WriteToStream
將基礎 VARIANT
儲存至數據流。
HRESULT WriteToStream(IStream* pStream);
參數
pStream
[in]數據流上介面的 IStream
指標。
傳回值
標準 HRESULT
值。