這個類別會 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 類型,其中包含聯集和成員,指出儲存在等位中的數據類型。 VARIANTs 通常用於自動化。
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、shortBYTE、、、long、unsigned shortULONGLONGLONGLONG、、、 unsigned long或 ,用來unsigned int初始化 CComVariant 物件。 物件的類型CComVariant分別為VT_I4、VT_UI1、VT_I2、、VT_I4VT_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 物件的、BYTEshort、long、、、、unsigned shortULONGLONGLONGLONGunsigned long 或 。 unsigned int 物件的類型CComVariant分別為VT_I4、VT_UI1、VT_I2、、VT_I4VT_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型別,例如 、 BSTRint或 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 值。