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
は通常、オートメーションで使用されます。
CComVariant
は VARIANT
型から派生しているため、VARIANT
を使用できる場所ならどこでも使用できます。 たとえば、V_VT
マクロを使用して CComVariant
の型を抽出したり、VARIANT
の場合と同様に vt
メンバーに直接アクセスしたりすることができます。
継承階層
要件
ヘッダー: 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
オブジェクトを初期化するために使用される bool
。 bool
引数は、格納される前に VARIANT_BOOL
に変換されます。 CComVariant
オブジェクトの型は VT_BOOL
です。
nSrc
[入力] CComVariant
オブジェクトを初期化するために使用される int
、BYTE
、short
、long
、LONGLONG
、ULONGLONG
、unsigned short
、unsigned long
、または unsigned int
。 CComVariant
オブジェクトの型はそれぞれ、VT_I4
、VT_UI1
、VT_I2
、VT_I4
、VT_I8
、VT_UI8
、VT_UI2
、VT_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
オブジェクトを初期化するために使用される float
。 CComVariant
オブジェクトの型は VT_R4
です。
dblSrc
[入力] CComVariant
オブジェクトを初期化するために使用される double
。 CComVariant
オブジェクトの型は VT_R8
です。
cySrc
[入力] CComVariant
オブジェクトを初期化するために使用される CY
。 CComVariant
オブジェクトの型は VT_CY
です。
pSrc
[入力] CComVariant
オブジェクトを初期化するために使用される IDispatch
または IUnknown
ポインター。 AddRef
はインターフェイス ポインターで呼び出されます。 CComVariant
オブジェクトの型はそれぞれ、VT_DISPATCH
または VT_UNKNOWN
です。
または、CComVariant
オブジェクトを初期化するために使用される SAFERRAY
ポインター。 SAFEARRAY
のコピーは、CComVariant
オブジェクトに格納されます。 CComVariant
オブジェクトの型は、SAFEARRAY
と VT_ARRAY
の元の型の組み合わせです。
cSrc
[入力] CComVariant
オブジェクトを初期化するために使用される char
。 CComVariant
オブジェクトの型は VT_I1
です。
bstrSrc
[入力] CComVariant
オブジェクトを初期化するために使用される BSTR
。 CComVariant
オブジェクトの型は 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
基になる VARIANT
を CComVariant
オブジェクトからデタッチし、オブジェクトの型を 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)
を加えたサイズを加えたものとして計算されます。 VARIANT
をVT_BSTR
型のVARIANT
に強制できない場合、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
[入力] CComVariant
オブジェクトに代入される CComVariant
または VARIANT
。 ソース バリアントのコンテンツは、変換せずにターゲットにコピーされます。
bstrSrc
[入力] CComVariant
オブジェクトに代入される BSTR
。 CComVariant
オブジェクトの型は VT_BSTR
です。
lpszSrc
[入力] CComVariant
オブジェクトに代入される文字列。 0 で終わるワイド (Unicode) 文字列を演算子の LPCOLESTR
バージョンに渡すことも、ANSI 文字列を LPCSTR
バージョンに渡すこともできます。 どちらの場合も、文字列は SysAllocString
を使用して割り当てられた Unicode BSTR
に変換されます。 CComVariant
オブジェクトの型は VT_BSTR
です。
bSrc
[入力] CComVariant
オブジェクトに代入される bool
。 bool
引数は、格納される前に VARIANT_BOOL
に変換されます。 CComVariant
オブジェクトの型は VT_BOOL
です。
nSrc
[入力] CComVariant
オブジェクトに代入される int
、BYTE
、short
、long
、LONGLONG
、ULONGLONG
、unsigned short
、unsigned long
、または unsigned int
。 CComVariant
オブジェクトの型はそれぞれ、VT_I4
、VT_UI1
、VT_I2
、VT_I4
、VT_I8
、VT_UI8
、VT_UI2
、VT_UI4
、または VT_UI4
です。
fltSrc
[入力] CComVariant
オブジェクトに代入される float
。 CComVariant
オブジェクトの型は VT_R4
です。
dblSrc
[入力] CComVariant
オブジェクトに代入される double
。 CComVariant
オブジェクトの型は VT_R8
です。
cySrc
[入力] CComVariant
オブジェクトに代入される CY
。 CComVariant
オブジェクトの型は VT_CY
です。
pSrc
[入力] CComVariant
オブジェクトに代入される IDispatch
または IUnknown
ポインター。 AddRef
はインターフェイス ポインターで呼び出されます。 CComVariant
オブジェクトの型はそれぞれ、VT_DISPATCH
または VT_UNKNOWN
です。
または、CComVariant
オブジェクトに代入される SAFEARRAY
ポインター。 SAFEARRAY
のコピーは、CComVariant
オブジェクトに格納されます。 CComVariant
オブジェクトの型は、SAFEARRAY
と VT_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
の型。たとえば 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
[入力] ストリームの IStream
インターフェイスへのポインター。
戻り値
標準の HRESULT
値。