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