VariantChangeType 함수(oleauto.h)
중요
이 API는 Microsoft 지원 항목 VarI8FromCy에서 CY 값이 매우 큰 경우 잘못된 값을 생성하는 문제에 의해 영향을 받습니다.
변형을 한 형식에서 다른 형식으로 변환합니다.
구문
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 필드는 이 값과 같아야 합니다.
반환 값
이 함수는 이러한 값 중 하나를 반환할 수 있습니다.
반환 코드 | Description |
---|---|
|
성공. |
|
변형 형식이 유효한 변형 형식이 아닙니다. |
|
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 |