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
標誌。
[in] vt
要轉換的目標類型。 如果傳回碼S_OK,則 *pvargDest 的 vt 字段保證等於此值。
傳回值
此函式可以傳回其中一個值。
傳回碼 | 描述 |
---|---|
|
成功。 |
|
Variant 類型不是有效的 Variant 類型。 |
|
pvarSrc 所指向的數據不符合目的地類型。 |
|
自變數無法強制套用至指定的型別。 |
|
其中一個自變數無效。 |
|
記憶體不足,無法完成作業。 |
備註
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。
某個類型的數位無法轉換成具有此函式之另一種型別的陣列。
規格需求
需求 | 值 |
---|---|
目標平台 | Windows |
標頭 | oleauto.h |
程式庫 | OleAut32.lib |
Dll | OleAut32.dll |