VariantChangeTypeEx 함수(oleauto.h)
중요
이 API는 CY 값이 매우 클 때 VarI8FromCy가 잘못된 값을 생성하는 Microsoft 지원 항목에 설명된 문제의 영향을 받습니다.
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가 가리키는 데이터가 대상 형식에 맞지 않습니다. |
|
인수를 지정된 형식으로 강제 변환할 수 없습니다. |
|
인수 중 하나가 잘못되었습니다. |
|
메모리가 부족하여 작업을 완료할 수 없습니다. |
설명
VariantChangeTypeEx 함수는 기본 형식 간의 강제 변환을 처리합니다(숫자-문자열 및 문자열-숫자 강제 변환 포함). VT_BYREF 설정된 변형은 참조된 값을 가져와 값으로 강제 변환됩니다. 개체의 Value 속성(DISPID_VALUE)을 호출하여 개체를 값으로 강제 변환합니다.
일반적으로 IDispatch::Invoke 의 구현자는 액세스 중인 멤버를 결정한 다음 VariantChangeType 을 호출하여 하나 이상의 인수 값을 가져옵니다. 예를 들어 IDispatch 호출이 하나의 문자열 인수를 사용하는 SetTitle 멤버를 지정하는 경우 구현자는 VariantChangeTypeEx 를 호출하여 인수를 VT_BSTR 강제 변환하려고 시도합니다.
VariantChangeTypeEx에서 오류를 반환하지 않으면 VARIANTARG의 bstrVal 필드에서 인수를 직접 가져올 수 있습니다. VariantChangeTypeEx가 DISP_E_TYPEMISMATCH 반환하는 경우 구현자는 *puArgErr를 0(오류의 인수 표시)으로 설정하고 IDispatch::Invoke에서 DISP_E_TYPEMISMATCH 반환합니다.
한 형식의 배열은 이 함수를 사용하여 다른 형식의 배열로 변환할 수 없습니다.
요구 사항
대상 플랫폼 | Windows |
헤더 | oleauto.h |
라이브러리 | OleAut32.lib |
DLL | OleAut32.dll |