COleVariant クラス
VARIANT データ型をカプセル化します。
構文
class COleVariant : public tagVARIANT
メンバー
パブリック コンストラクター
名前 | 説明 |
---|---|
COleVariant::COleVariant | COleVariant オブジェクトを構築します。 |
パブリック メソッド
名前 | 説明 |
---|---|
COleVariant::Attach | COleVariant に VARIANT をアタッチします。 |
COleVariant::ChangeType | この COleVariant オブジェクトのバリアント型を変更します。 |
COleVariant::Clear | この COleVariant オブジェクトをクリアします。 |
COleVariant::Detach | COleVariant から VARIANT をデタッチし、その VARIANT を返します。 |
COleVariant::GetByteArrayFromVariantArray | 既存のバリアント配列からバイト配列を取得します。 |
COleVariant::SetString | 文字列を特定の型に設定します (通常は ANSI)。 |
パブリック演算子
名前 | 説明 |
---|---|
COleVariant::operator LPCVARIANT | COleVariant 値を LPCVARIANT に変換します。 |
COleVariant::operator LPVARIANT | COleVariant オブジェクトを LPVARIANT に変換します。 |
COleVariant::operator = | COleVariant 値をコピーします。 |
COleVariant::operator == | 2 つの COleVariant 値を比較します。 |
COleVariant::operator << , COleVariant::operator >> |
COleVariant の値を CArchive または CDumpContext に出力し、CArchive から COleVariant オブジェクトを入力します。 |
注釈
このデータ型は OLE オートメーションで使われます。 具体的には、DISPPARAMS 構造体は、VARIANT 構造体の配列へのポインターが含まれています。 DISPPARAMS
構造体は IDispatch::Invoke にパラメーターを渡すために使われます。
Note
このクラスは、VARIANT
構造体から派生しています つまり、VARIANT
を呼び出すパラメーターに COleVariant
を渡すことができ、VARIANT
構造体のデータ メンバーが COleVariant
のアクセス可能なデータ メンバーであることを意味します。
2 つの関連する MFC クラス COleCurrency と COleDateTime を使って、バリアント データ型 CURRENCY (VT_CY
) と DATE (VT_DATE
) をカプセル化します。 COleVariant
クラスは DAO クラス内で広く使われます。これらのクラスに関するこのクラスの一般的な使用方法は、CDaoQueryDef、CDaoRecordset などの記事を参照してください。
詳細については、Windows SDK の VARIANT、CURRENCY、DISPPARAMS、IDispatch::Invoke のエントリの記事を参照してください。
COleVariant
クラスと OLE オートメーションでの使用の詳細については、記事「オートメーション」の OLE オートメーションでのパラメーターの受け渡しに関する記事を参照してください。
継承階層
tagVARIANT
COleVariant
要件
ヘッダー : afxdisp.h
COleVariant::Attach
指定した VARIANT オブジェクトを現在の COleVariant
オブジェクトにアタッチするには、この関数を呼び出します。
void Attach(VARIANT& varSrc);
パラメーター
varSrc
現在の COleVariant
オブジェクトにアタッチする既存の VARIANT
オブジェクト。
注釈
この関数を使って、varSrc の VARTYPE を VT_EMPTY に設定します。
詳細については、Windows SDK の VARIANT と VARENUM のエントリに関する記事を参照してください。
COleVariant::COleVariant
COleVariant
オブジェクトを構築します。
COleVariant();
COleVariant(const VARIANT& varSrc);
COleVariant(const COleVariant& varSrc);
COleVariant(LPCVARIANT pSrc);
COleVariant(LPCTSTR lpszSrc);
COleVariant(LPCTSTR lpszSrc, VARTYPE vtSrc);
COleVariant(CString& strSrc);
COleVariant(BYTE nSrc);
COleVariant(short nSrc, VARTYPE vtSrc = VT_I2);
COleVariant(long lSrc,VARTYPE vtSrc = VT_I4);
COleVariant(const COleCurrency& curSrc);
COleVariant(float fltSrc);
COleVariant(double dblSrc);
COleVariant(const COleDateTime& timeSrc);
COleVariant(const CByteArray& arrSrc);
COleVariant(const CLongBinary& lbSrc);
COleVariant(LPCITEMIDLIST pidl);
パラメーター
varSrc
新しい COleVariant
オブジェクトにコピーする既存の COleVariant
または VARIANT
オブジェクト。
pSrc
新しい COleVariant
オブジェクトにコピーする VARIANT
オブジェクトへのポインター。
lpszSrc
新しい COleVariant
オブジェクトにコピーする null 終端文字列。
vtSrc
新しい COleVariant
オブジェクトの VARTYPE
。
strSrc
新しい COleVariant
オブジェクトにコピーする既存の CString オブジェクト。
nSrc、lSrc。新しい COleVariant
オブジェクトにコピーする数値。
vtSrc
新しい COleVariant
オブジェクトの VARTYPE
。
curSrc
新しい COleVariant
オブジェクトにコピーする既存の COleCurrency オブジェクト。
fltSrc、dblSrc
新しい COleVariant
オブジェクトにコピーされる数値。
timeSrc
新しい COleVariant
オブジェクトにコピーする既存の COleDateTime オブジェクト。
arrSrc
新しい COleVariant
オブジェクトにコピーする既存の CByteArray オブジェクト。
lbSrc
新しい COleVariant
オブジェクトにコピーする既存の CLongBinary オブジェクト。
pidl
新しいCOleVariant
オブジェクトにコピーされるITEMIDLIST構造体へのポインター。
解説
これらのすべてのコンストラクターで、指定した値に初期化された新しい COleVariant
オブジェクトが作成されます。 これらの各コンストラクターの簡単な説明を次に示します。
COleVariant( ): 空の
COleVariant
オブジェクト VT_EMPTY を作成します。COleVariant( varSrc ) 既存の
VARIANT
またはCOleVariant
オブジェクトをコピーします。 バリアント型は保持されます。COleVariant( pSrc ) 既存の
VARIANT
またはCOleVariant
オブジェクトをコピーします。 バリアント型は保持されます。COleVariant( lpszSrc ) 文字列を新しいオブジェクトVT_BSTR (UNICODE) にコピーします。
COleVariant( lpszSrc , vtSrc ) 新しいオブジェクトに文字列をコピーします。 パラメーター vtSrc は VT_BSTR (UNICODE) または VT_BSTRT (ANSI) である必要があります。
COleVariant( strSrc ) 文字列を新しいオブジェクトVT_BSTR (UNICODE) にコピーします。
COleVariant( nSrc ) 8 ビット整数を新しいオブジェクト (VT_UI1) にコピーします。
COleVariant( nSrc , vtSrc ) 16 ビット整数 (またはブール値) を新しいオブジェクトにコピーします。 パラメーター vtSrc は VT_I2 または VT_BOOL である必要があります。
COleVariant( lSrc , vtSrc ) 32 ビット整数 (または SCODE 値) を新しいオブジェクトにコピーします。 パラメーター vtSrc は VT_I4、VT_ERROR、または VT_BOOL である必要があります。
COleVariant( curSrc )
COleCurrency
値を新しいオブジェクト (VT_CY) にコピーします。COleVariant( fltSrc ) 32 ビット浮動小数点値を新しいオブジェクトVT_R4にコピーします。
COleVariant( dblSrc ) 64 ビット浮動小数点値を新しいオブジェクトVT_R8にコピーします。
COleVariant( timeSrc ) 新しいオブジェクト (VT_DATE) に
COleDateTime
値をコピーします。COleVariant( arrSrc )
CByteArray
オブジェクトを新しいオブジェクト (VT_EMPTY) にコピーします。COleVariant( lbSrc )
CLongBinary
オブジェクトを新しいオブジェクト (VT_EMPTY) にコピーします。
SCODE の詳細については、Windows SDK の「COM エラー コードの構造」を参照してください。
COleVariant::ChangeType
この COleVariant
オブジェクトのバリアント値の型を変換します。
void ChangeType(VARTYPE vartype, LPVARIANT pSrc = NULL);
パラメーター
vartype
この COleVariant
オブジェクトの VARTYPE。
pSrc
変換する VARIANT オブジェクトへのポインター。 この値が NULL の場合、この COleVariant
オブジェクトは変換のソースとして使われます。
注釈
詳細については、Windows SDK の VARIANT、VARENUM、VariantChangeType のエントリの記事を参照してください。
COleVariant::Clear
VARIANT
を消去します。
void Clear();
注釈
これを使って、このオブジェクトの VARTYPE を VT_EMPTY に設定します。 COleVariant
デストラクターからこの関数を呼び出します。
詳細については、Windows SDK の VARIANT
、VARTYPE、VariantClear
のエントリの記事を参照してください。
COleVariant::Detach
基になる VARIANT オブジェクトをこの COleVariant
オブジェクトからデタッチします。
VARIANT Detach();
注釈
この関数を使って、この COleVariant
オブジェクトの VARTYPE を VT_EMPTY に設定します。
注意
Detach
を呼び出した後に VariantClear
と結果の VARIANT
構造体を呼び出すのは、呼び出し元の責任です。
詳細については、Windows SDK の VARIANT、VARENUM、VariantClear のエントリの記事を参照してください。
COleVariant::GetByteArrayFromVariantArray
既存のバリアント配列からバイト配列を取得します
void GetByteArrayFromVariantArray(CByteArray& bytes);
パラメーター
bytes
既存の CByteArray オブジェクトへの参照。
COleVariant::operator LPCVARIANT
このキャスト演算子は、この COleVariant
オブジェクトからコピーされた値を持つ VARIANT
構造体を返します。
operator LPCVARIANT() const;
注釈
COleVariant::operator LPVARIANT
この COleVariant
オブジェクトの基になる VARIANT
構造体にアクセスするには、このキャスト演算子を呼び出します。
operator LPVARIANT();
解説
注意事項
この関数から返されるポインターからアクセスされる VARIANT
構造体の値を変更すると、この COleVariant
オブジェクトの値が変更されます。
COleVariant::operator =
これらのオーバーロードされた代入演算子を使うと、ソース値をこの COleVariant
オブジェクトにコピーすることができます。
const COleVariant& operator=(const VARIANT& varSrc);
const COleVariant& operator=(LPCVARIANT pSrc);
const COleVariant& operator=(const COleVariant& varSrc);
const COleVariant& operator=(const LPCTSTR lpszSrc);
const COleVariant& operator=(const CString& strSrc);
const COleVariant& operator=(BYTE nSrc);
const COleVariant& operator=(short nSrc);
const COleVariant& operator=(long lSrc);
const COleVariant& operator=(const COleCurrency& curSrc);
const COleVariant& operator=(float fltSrc);
const COleVariant& operator=(double dblSrc);
const COleVariant& operator=(const COleDateTime& dateSrc);
const COleVariant& operator=(const CByteArray& arrSrc);
const COleVariant& operator=(const CLongBinary& lbSrc);
注釈
各演算子の簡単な説明を次に示します。
operator =( varSrc ) 既存の VARIANT または
COleVariant
オブジェクトをこのオブジェクトにコピーします。operator =( pSrc ) pSrc がアクセスする VARIANT オブジェクトをこのオブジェクトにコピーします。
operator =( lpszSrc ) null で終わる文字列をこのオブジェクトにコピーし、VARTYPE を VT_BSTR に設定します。
operator =( strSrc ) CString オブジェクトをこのオブジェクトにコピーし、VARTYPE を VT_BSTR に設定します。
operator =( nSrc ) このオブジェクトに 8 ビットまたは 16 ビットの整数値をコピーします。 nSrc が 8 ビット値の場合、この VARTYPE は VT_UI1 に設定されます。 nSrc が 16 ビット値でこれの VARTYPE が VT_BOOL の場合は保持され、それ以外の場合は VT_I2 に設定されます。
operator =( lSrc ) このオブジェクトに 32 ビット整数値をコピーします。 これの VARTYPE が VT_ERROR の場合は保持され、それ以外の場合は VT_I4 に設定します。
operator =( curSrc ) COleCurrency オブジェクトをこのオブジェクトにコピーし、VARTYPE を VT_CY に設定します。
operator =( fltSrc ) 32 ビット浮動小数点値をこのオブジェクトにコピーし、VARTYPE をVT_R4に設定します。
operator =( dblSrc ) 64 ビット浮動小数点値をこのオブジェクトにコピーし、VARTYPE をVT_R8に設定します。
operator =( dateSrc ) COleDateTime オブジェクトをこのオブジェクトにコピーし、VARTYPE を VT_DATE に設定します。
operator =( arrSrc ) CByteArray オブジェクトをこの
COleVariant
オブジェクトにコピーします。operator =( lbSrc ) CLongBinary オブジェクトをこの
COleVariant
オブジェクトにコピーします。
詳細については、Windows SDK の VARIANT と VARENUM のエントリに関する記事を参照してください。
COleVariant::operator ==
この演算子を使って、2 つのバリアント値を比較し、それらが等しい場合は 0 以外を、それ以外の場合は 0 を返します。
BOOL operator==(const VARIANT& varSrc) const;
BOOL operator==(LPCVARIANT pSrc) const;
COleVariant::operator <<
, COleVariant::operator >>
COleVariant
の値を CArchive
または CdumpContext
に出力し、CArchive
から COleVariant
オブジェクトを入力します。
friend CDumpContext& AFXAPI operator<<(
CDumpContext& dc,
OleVariant varSrc);
friend CArchive& AFXAPI operator<<(
CArchive& ar,
COleVariant varSrc);
friend CArchive& AFXAPI operator>>(
CArchive& ar,
COleVariant& varSrc);
注釈
COleVariant
挿入 (<<) 演算子は、診断のダンプとアーカイブへの格納をサポートします。 抽出 (>>) 演算子は、アーカイブからの読み込みをサポートします。
COleVariant::SetString
文字列を特定の型に設定します。
void SetString(LPCTSTR lpszSrc, VARTYPE vtSrc);
パラメーター
lpszSrc
新しい COleVariant
オブジェクトにコピーする null 終端文字列。
VtSrc
新しい COleVariant
オブジェクトの VARTYPE。
注釈
パラメーター vtSrc は VT_BSTR (UNICODE) または VT_BSTRT (ANSI) である必要があります。 通常、SetString
は文字列を ANSI に設定するために使われます。これは、string または string ポインターのパラメーターを持ち、VARTYPE がない COleVariant::COleVariant コンストラクターの既定値は UNICODE だからです。
UNICODE ではないビルドの DAO レコードセットは、文字列が ANSI であることを想定しています。 したがって、COleVariant
オブジェクトを使用する DAO 関数の場合、UNICODE レコードセットを作成していない場合は、 COleVariant::COleVariant( lpszSrc )、 vtSrc )形式のコンストラクターを vtSrc VT_BSTRT (ANSI) に設定するかvtSrc でSetString
を使用して ANSI 文字列を作成VT_BSTRT必要があります。 たとえば、CDaoRecordset
関数の CDaoRecordset::Seek と CDaoRecordset::SetFieldValue はパラメーターとして COleVariant
オブジェクトを使います。 DAO レコードセットが UNICODE でない場合、これらのオブジェクトは ANSI である必要があります。