VariantChangeType 関数 (oleauto.h)
重要
この API は、CY 値が非常に大きい場合に VarI8FromCy が正しくない値を生成Microsoft サポートトピックで説明されている問題の影響を受けます。
バリアント型をある型から別の型に変換します。
構文
HRESULT VariantChangeType(
[out] VARIANTARG *pvargDest,
[in] const VARIANTARG *pvarSrc,
[in] USHORT wFlags,
[in] VARTYPE vt
);
パラメーター
[out] pvargDest
変換先バリアント。 これが pvarSrc と同じ場合、バリアントはインプレースで変換されます。
[in] pvarSrc
変換するバリアント。
[in] wFlags
フラグ。
[in] vt
変換後の型。 戻りコードがS_OK場合、*pvargDest の vt フィールドはこの値と等しいことが保証されます。
戻り値
この関数は、これらの値のいずれかを返すことができます。
リターン コード | 説明 |
---|---|
|
正常終了しました。 |
|
バリアント型がバリアント型の有効な型ではありません。 |
|
pvarSrc が指すデータは、変換先の型に収まりません。 |
|
引数を指定した型に強制することはできません。 |
|
引数の 1 つが無効です。 |
|
操作を完了するにはメモリが不足しています。 |
注釈
VariantChangeType 関数は、基本型 (数値から文字列への強制型と文字列間強制型を含む) 間の強制変換を処理します。 pvarSrc 引数は、変換プロセス中に変更されます。 たとえば、ソースバリアントがVT_BOOL型で、変換先がVT_UINT型の場合、 pvarSrc 引数は最初にVT_I2に変換され、変換が続行されます。 VT_BYREF設定されたバリアント型 (variant) は、参照先の値を取得することによって値に強制変換されます。 オブジェクトの Value プロパティ (DISPID_VALUE) を呼び出して、オブジェクトを値に強制変換します。
通常、 IDispatch::Invoke の実装者はアクセスするメンバーを決定し、 VariantChangeType を 呼び出して 1 つ以上の引数の値を取得します。 たとえば、 IDispatch 呼び出しで 1 つの文字列引数を受け取る SetTitle メンバーが指定されている場合、実装者は VariantChangeType を 呼び出して、引数をVT_BSTRに強制しようとします。 VariantChangeType がエラーを返さない場合、引数は VARIANTARG の bstrVal フィールドから直接取得できます。 VariantChangeType がDISP_E_TYPEMISMATCHを返す場合、実装者は *puArgErr を 0 に設定し (エラーの引数を示します)、Invoke からDISP_E_TYPEMISMATCHを返します。
ある型の配列は、この関数を使用して別の型の配列に変換できません。
要件
要件 | 値 |
---|---|
対象プラットフォーム | Windows |
ヘッダー | oleauto.h |
Library | OleAut32.lib |
[DLL] | OleAut32.dll |