共用方式為


VariantChangeType 函式 (oleauto.h)

重要

當 CY 值非常大時,此 API 會受到 Microsoft 支援服務 主題 VarI8FromCy 所產生的不正確值所影響。

將變體從某個類型轉換成另一個類型。

語法

HRESULT VariantChangeType(
  [out] VARIANTARG       *pvargDest,
  [in]  const VARIANTARG *pvarSrc,
  [in]  USHORT           wFlags,
  [in]  VARTYPE          vt
);

參數

[out] pvargDest

目的地變體。 如果這與 pvarSrc 相同,則會就地轉換變體。

[in] pvarSrc

要轉換的變體。

[in] wFlags

標誌。

意義
VARIANT_NOVALUEPROP
藉由取得 Value 屬性,防止函式嘗試強制對象成為基本類型。 應用程式只有在需要時才應該設定此旗標,因為它會使其行為與其他應用程式不一致。
VARIANT_ALPHABOOL
將VT_BOOL值轉換成包含 「True」 或 「False」 的字串。
VARIANT_NOUSEROVERRIDE
若要轉換至VT_BSTR或從VT_BSTR,請將LOCALE_NOUSEROVERRIDE傳遞至核心強制例程。
VARIANT_LOCALBOOL
若要從VT_BOOL轉換成VT_BSTR和返回,請使用本機計算機上地區設定所指定的語言。

[in] vt

要轉換的目標類型。 如果傳回碼S_OK,則 *pvargDestvt 字段保證等於此值。

傳回值

此函式可以傳回其中一個值。

傳回碼 描述
S_OK
成功。
DISP_E_BADVARTYPE
Variant 類型不是有效的 Variant 類型。
DISP_E_OVERFLOW
pvarSrc 所指向的數據不符合目的地類型。
DISP_E_TYPEMISMATCH
自變數無法強制套用至指定的型別。
E_INVALIDARG
其中一個自變數無效。
E_OUTOFMEMORY
記憶體不足,無法完成作業。

備註

VariantChangeType 函式會處理基本類型之間的強制轉換 (包括數值對字串和字串對數值強制) 。 pvarSrc 自變數會在轉換程式期間變更。 例如,如果來源變體的類型為 VT_BOOL,而目的地的類型為 VT_UINT, 則 pvarSrc 自變數會先轉換成 VT_I2,然後繼續轉換。 已VT_BYREF設定的變體會藉由取得參考的值來強制轉型為值。 藉由叫用物件的 Value 屬性 (DISPID_VALUE) ,對象會強制轉換成值。

一般而言, IDispatch::Invoke 的實作器會決定要存取的成員,然後呼叫 VariantChangeType 以取得一或多個自變數的值。 例如,如果 IDispatch 呼叫指定採用一個字串自變數的 SetTitle 成員,實作者會呼叫 VariantChangeType 嘗試將自變數強制VT_BSTR。 如果 VariantChangeType 未傳回錯誤,則可以直接從 VARIANTARG 的 bstrVal 字段取得自變數。 如果 VariantChangeType 傳回DISP_E_TYPEMISMATCH,實作者會將 *puArgErr 設定為 0 (指出錯誤) 中的自變數,並從 Invoke 傳回DISP_E_TYPEMISMATCH。

某個類型的數位無法轉換成具有此函式之另一種型別的陣列。

注意rgvarg 陣列中不應該變更 VARIANTARG 的類型。
 

規格需求

需求
目標平台 Windows
標頭 oleauto.h
程式庫 OleAut32.lib
Dll OleAut32.dll

另請參閱

Variant 操作函式

VariantChangeTypeEx