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 クラス COleCurrencyCOleDateTime を使って、バリアント データ型 CURRENCY (VT_CY) と DATE (VT_DATE) をカプセル化します。 COleVariant クラスは DAO クラス内で広く使われます。これらのクラスに関するこのクラスの一般的な使用方法は、CDaoQueryDefCDaoRecordset などの記事を参照してください。

詳細については、Windows SDK の VARIANTCURRENCYDISPPARAMSIDispatch::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 の VARIANTVARENUM のエントリに関する記事を参照してください。

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 オブジェクト。

nSrclSrc。新しい COleVariant オブジェクトにコピーする数値。

vtSrc
新しい COleVariant オブジェクトの VARTYPE

curSrc
新しい COleVariant オブジェクトにコピーする既存の COleCurrency オブジェクト。

fltSrcdblSrc
新しい 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): COleDateTime 値を新しいオブジェクト VT_DATE にコピーします。

  • 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 の VARIANTVARENUMVariantChangeType のエントリの記事を参照してください。

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 の VARIANTVARENUMVariantClear のエントリの記事を参照してください。

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): String オブジェクトをこのオブジェクトにコピーし、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 の VARIANTVARENUM のエントリに関する記事を参照してください。

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 レコードセットを作成していない場合、vtSrc を VT_BSTRT (ANSI) に設定してコンストラクターの COleVariant::COleVariant(lpszSrc,vtSrc) フォームを使うか、vtSrc を VT_BSTRT に設定した SetString を使って ANSI 文字列を作成する必要があります。 たとえば、CDaoRecordset 関数の CDaoRecordset::SeekCDaoRecordset::SetFieldValue はパラメーターとして COleVariant オブジェクトを使います。 DAO レコードセットが UNICODE でない場合、これらのオブジェクトは ANSI である必要があります。

関連項目

階層図