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

플래그.

의미
VARIANT_NOVALUEPROP
Value 속성을 가져오면 함수가 개체를 기본 형식으로 강제 변환하지 못하도록 합니다. 애플리케이션은 해당 동작이 다른 애플리케이션과 일치하지 않도록 하므로 필요한 경우에만 이 플래그를 설정해야 합니다.
VARIANT_ALPHABOOL
VT_BOOL 값을 "True" 또는 "False"를 포함하는 문자열로 변환합니다.
VARIANT_NOUSEROVERRIDE
VT_BSTR 또는 LOCALE_NOUSEROVERRIDE 변환의 경우 LOCALE_NOUSEROVERRIDE 핵심 강제 변환 루틴에 전달합니다.
VARIANT_LOCALBOOL
VT_BOOL VT_BSTR 및 뒤로 변환하는 경우 은 로컬 컴퓨터에서 사용 중인 로캘에 지정된 언어를 사용합니다.

[in] vt

변환할 대상 형식입니다. 반환 코드가 S_OK 경우 *pvargDestvt 필드는 이 값과 같아야 합니다.

반환 값

이 함수는 이러한 값 중 하나를 반환할 수 있습니다.

반환 코드 Description
S_OK
성공.
DISP_E_BADVARTYPE
변형 형식이 유효한 변형 형식이 아닙니다.
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 반환합니다.

한 형식의 배열은 이 함수를 사용하여 다른 형식의 배열로 변환할 수 없습니다.

참고 VARIANTARG의 형식은 현재 위치의 rgvarg 배열에서 변경하면 안 됩니다.
 

요구 사항

요구 사항
대상 플랫폼 Windows
헤더 oleauto.h
라이브러리 OleAut32.lib
DLL OleAut32.dll

추가 정보

변형 조작 함수

VariantChangeTypeEx