CComVariant クラス

このクラスでは、格納データの型を示すメンバーを提供して、VARIANT 型をラップします。

構文

class CComVariant : public tagVARIANT

メンバー

パブリック コンストラクター

名前 説明
CComVariant::CComVariant コンストラクター。
CComVariant::~CComVariant デストラクター。

パブリック メソッド

名前 説明
CComVariant::Attach VARIANTCComVariant オブジェクトにアタッチします。
CComVariant::ChangeType CComVariant オブジェクトを新しい型に変換します。
CComVariant::Clear CComVariant オブジェクトをクリアします。
CComVariant::Copy VARIANTCComVariant オブジェクトにコピーします。
CComVariant::CopyTo CComVariant オブジェクトのコンテンツをコピーします。
CComVariant::Detach 基になる VARIANTCComVariant オブジェクトからデタッチします。
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 は通常、オートメーションで使用されます。

CComVariantVARIANT 型から派生しているため、VARIANT を使用できる場所ならどこでも使用できます。 たとえば、V_VT マクロを使用して CComVariant の型を抽出したり、VARIANT の場合と同様に vt メンバーに直接アクセスしたりすることができます。

継承階層

tagVARIANT
 └ CComVariant

要件

ヘッダー: atlcomcli.h

CComVariant::Attach

CComVariant オブジェクトの現在のコンテンツを安全にクリアし、pSrc のコンテンツをこのオブジェクトにコピーしてから、pSrc のバリアント型を VT_EMPTY に設定します。

HRESULT Attach(VARIANT* pSrc);

パラメーター

pSrc
[入力] オブジェクトにアタッチされる 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
[入力] CComVariant オブジェクトを初期化するために使用される CComVariant または VARIANT。 ソース バリアントのコンテンツは、変換せずにターゲットにコピーされます。

lpszSrc
[入力] CComVariant オブジェクトを初期化するために使用される文字列。 0 で終わるワイド (Unicode) 文字列をコンストラクターの LPCOLESTR バージョンに渡すことも、ANSI 文字列を LPCSTR バージョンに渡すこともできます。 どちらの場合も、文字列は SysAllocString を使用して割り当てられた Unicode BSTR に変換されます。 CComVariant オブジェクトの型は VT_BSTR です。

bSrc
[入力] CComVariant オブジェクトを初期化するために使用される boolbool 引数は、格納される前に VARIANT_BOOL に変換されます。 CComVariant オブジェクトの型は VT_BOOL です。

nSrc
[入力] CComVariant オブジェクトを初期化するために使用される intBYTEshortlongLONGLONGULONGLONGunsigned shortunsigned long、または unsigned intCComVariant オブジェクトの型はそれぞれ、VT_I4VT_UI1VT_I2VT_I4VT_I8VT_UI8VT_UI2VT_UI4、または VT_UI4 です。

vtSrc
[入力] バリアントの型。 最初のパラメーターが int の場合、有効な型は VT_I4 および VT_INT です。 最初のパラメーターが long の場合、有効な型は VT_I4 および VT_ERROR です。 最初のパラメーターが double の場合、有効な型は VT_R8 および VT_DATE です。 最初のパラメーターが unsigned int の場合、有効な型は VT_UI4 および VT_UINT です。

fltSrc
[入力] CComVariant オブジェクトを初期化するために使用される floatCComVariant オブジェクトの型は VT_R4 です。

dblSrc
[入力] CComVariant オブジェクトを初期化するために使用される doubleCComVariant オブジェクトの型は VT_R8 です。

cySrc
[入力] CComVariant オブジェクトを初期化するために使用される CYCComVariant オブジェクトの型は VT_CY です。

pSrc
[入力] CComVariant オブジェクトを初期化するために使用される IDispatch または IUnknown ポインター。 AddRef はインターフェイス ポインターで呼び出されます。 CComVariant オブジェクトの型はそれぞれ、VT_DISPATCH または VT_UNKNOWN です。

または、CComVariant オブジェクトを初期化するために使用される SAFERRAY ポインター。 SAFEARRAY のコピーは、CComVariant オブジェクトに格納されます。 CComVariant オブジェクトの型は、SAFEARRAYVT_ARRAY の元の型の組み合わせです。

cSrc
[入力] CComVariant オブジェクトを初期化するために使用される charCComVariant オブジェクトの型は VT_I1 です。

bstrSrc
[入力] CComVariant オブジェクトを初期化するために使用される BSTRCComVariant オブジェクトの型は VT_BSTR です。

解説

デストラクターは、CComVariant::Clear を呼び出すことによってクリーンアップを管理します。

CComVariant::~CComVariant

デストラクター。

~CComVariant() throw();

解説

このメソッドは、CComVariant::Clear を呼び出すことによってクリーンアップを管理します。

CComVariant::ChangeType

CComVariant オブジェクトを新しい型に変換します。

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

パラメーター

vtNew
[入力] CComVariant オブジェクトの新しい型。

pSrc
[入力] 値が新しい型に変換される VARIANT へのポインター。 既定値は NULL です。つまり、CComVariant オブジェクトはインプレースで変換されます。

戻り値

標準の HRESULT 値。

解説

pSrc の値を渡す場合、ChangeType では変換のソースとしてこのVARIANT が使用されます。 それ以外の場合、CComVariant オブジェクトがソースです。

CComVariant::Clear

VariantClear Win32 関数を呼び出して、CComVariant オブジェクトをクリアします。

HRESULT Clear();

戻り値

標準の HRESULT 値。

解説

デストラクターによって自動的に Clear が呼び出されます。

CComVariant::Copy

CComVariant オブジェクトを解放してから、指定された VARIANT のコピーを代入します。

HRESULT Copy(const VARIANT* pSrc);

パラメーター

pSrc
[入力] コピーする VARIANT へのポインター。

戻り値

標準の HRESULT 値。

CComVariant::CopyTo

CComVariant オブジェクトのコンテンツをコピーします。

HRESULT CopyTo(BSTR* pstrDest);

パラメーター

pstrDest
CComVariant オブジェクトのコンテンツのコピーを受け取る BSTR を指します。

戻り値

標準の HRESULT 値。

解説

CComVariant オブジェクトは VT_BSTR 型でなければなりません。

CComVariant::Detach

基になる VARIANTCComVariant オブジェクトからデタッチし、オブジェクトの型を VT_EMPTY に設定します。

HRESULT Detach(VARIANT* pDest);

パラメーター

pDest
[出力] オブジェクトの基になる VARIANT 値を返します。

戻り値

標準の HRESULT 値。

解説

pDest によって参照される VARIANT のコンテンツは、呼び出し元の CComVariant オブジェクトの値と型が代入される前に自動的にクリアされます。

CComVariant::GetSize

単純固定サイズの VARIANT の場合、このメソッドにより、基になるデータ型の sizeof 値に sizeof(VARTYPE) を加えたものが返されます。

ULONG GetSize() const;

戻り値

CComVariant オブジェクトの現在のコンテンツのサイズ (バイト単位)。

解説

VARIANT にインターフェイス ポインターが含まれている場合、GetSize では IPersistStream または IPersistStreamInit についてクエリを実行します。 成功した場合、戻り値は、GetSizeMax によって返された下位 32 ビットの値に、sizeof(CLSID)sizeof(VARTYPE) を加えたものになります。 インターフェイス ポインターが NULL の場合、GetSize では sizeof(CLSID)sizeof(VARTYPE) が返されます。 合計サイズが ULONG_MAX を超える場合、GetSize では、エラーを示す sizeof(VARTYPE) が返されます。

それ以外の場合は、型 VT_BSTR の一時的な VARIANT が現在の VARIANT から強制的に変換されます。 この BSTR の長さは、文字列の長さに文字列自体の長さを加えたサイズに、NULL 文字に sizeof(VARTYPE) を加えたサイズを加えたものとして計算されます。 VARIANTVT_BSTR型のVARIANTに強制できない場合、GetSizesizeof(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
[入力] CComVariant オブジェクトに代入される CComVariant または VARIANT。 ソース バリアントのコンテンツは、変換せずにターゲットにコピーされます。

bstrSrc
[入力] CComVariant オブジェクトに代入される BSTRCComVariant オブジェクトの型は VT_BSTR です。

lpszSrc
[入力] CComVariant オブジェクトに代入される文字列。 0 で終わるワイド (Unicode) 文字列を演算子の LPCOLESTR バージョンに渡すことも、ANSI 文字列を LPCSTR バージョンに渡すこともできます。 どちらの場合も、文字列は SysAllocString を使用して割り当てられた Unicode BSTR に変換されます。 CComVariant オブジェクトの型は VT_BSTR です。

bSrc
[入力] CComVariant オブジェクトに代入される boolbool 引数は、格納される前に VARIANT_BOOL に変換されます。 CComVariant オブジェクトの型は VT_BOOL です。

nSrc
[入力] CComVariant オブジェクトに代入される intBYTEshortlongLONGLONGULONGLONGunsigned shortunsigned long、または unsigned intCComVariant オブジェクトの型はそれぞれ、VT_I4VT_UI1VT_I2VT_I4VT_I8VT_UI8VT_UI2VT_UI4、または VT_UI4 です。

fltSrc
[入力] CComVariant オブジェクトに代入される floatCComVariant オブジェクトの型は VT_R4 です。

dblSrc
[入力] CComVariant オブジェクトに代入される doubleCComVariant オブジェクトの型は VT_R8 です。

cySrc
[入力] CComVariant オブジェクトに代入される CYCComVariant オブジェクトの型は VT_CY です。

pSrc
[入力] CComVariant オブジェクトに代入される IDispatch または IUnknown ポインター。 AddRef はインターフェイス ポインターで呼び出されます。 CComVariant オブジェクトの型はそれぞれ、VT_DISPATCH または VT_UNKNOWN です。

または、CComVariant オブジェクトに代入される SAFEARRAY ポインター。 SAFEARRAY のコピーは、CComVariant オブジェクトに格納されます。 CComVariant オブジェクトの型は、SAFEARRAYVT_ARRAY の元の型の組み合わせです。

cSrc
[入力] CComVariant オブジェクトに代入される char。 CComVariant オブジェクトの型は VT_I1 です。

CComVariant::operator ==

CComVariant オブジェクトが指定された VARIANT と等しいかどうかを示します。

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

解説

varSrc の値と型が、CComVariant オブジェクトの値と型にそれぞれ等しい場合に TRUE を返します。 それ以外の場合は FALSE。 演算子では、比較するためにユーザーの既定のロケールが使用されます。

演算子では、バリアント型の値のみが比較されます。 文字列、整数、および浮動小数点が比較されますが、配列やレコードは比較されません。

CComVariant::operator !=

CComVariant オブジェクトが、指定された VARIANT と等しくないかどうかを示します。

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

解説

varSrc の値と型が、CComVariant オブジェクトの値と型にそれぞれ等しくない場合に TRUE を返します。 それ以外の場合は FALSE。 演算子では、比較するためにユーザーの既定のロケールが使用されます。

演算子では、バリアント型の値のみが比較されます。 文字列、整数、および浮動小数点が比較されますが、配列やレコードは比較されません。

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
[入力] データを含むストリームの 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
[入力] ストリームの IStream インターフェイスへのポインター。

戻り値

標準の HRESULT 値。

関連項目

クラスの概要