반응형
CComVariant(tagVARIANT)는 모든 타입을 다 넣을 수 있는 union 구조체라서 해당 내용을 디버깅해 보기가 까다롭다. 여기서는 간단히 값을 볼 수 있게 wstring이나 CString으로 변환하게 해놓았다.
CComVariant(tagVARIANT)는 vt라는 필드를 가지고 있다.
해당 필드는 객체가 어떤 타입의 값을 가지고 있는지 enum 타입으로 가지고 있다.
아래 코드는 해당 필드를 이용하여 CComVariant(tagVARIANT) 값을 wstring으로 변환하는 코드다.
윈도우에서 짜는 관계로 편의상 CString의 Format을 이용하였다.
고로 함수의 return 타입을 CString으로 변경하고 조금만 수정하면 CString으로도 변경된다.
참고로 아래 코드는 모든 타입을 지원하지는 않는다. 주요 타입을 지원하니 그 외의 필요 타입은 응용해서 간단히 코드를 추가하면 된다.
std::wstring to_wstring(CComVariant& value)
{
std::wstring result;
CString format;
switch (value.vt)
{
case VT_I4:
format.Format(L"%d", value.intVal);
break;
case VT_UI1:
format.Format(L"%u", value.cVal);
break;
case VT_UI4:
format.Format(L"%u", value.uintVal);
break;
case VT_R8:
format.Format(L"%f", value.dblVal);
break;
default:
format.Format(L"Unknown: %d", value.vt);
break;
}
result = format;
return result;
}
반응형
'윈도우 프로그래밍' 카테고리의 다른 글
MFC WebView2(IE Edge, 엣지) 컨트롤 (0) | 2022.05.04 |
---|---|
MFC 다이얼로그에서 컨트롤 관련 깜박임 문제 해결 (0) | 2022.03.21 |
MFC 모든 차일드 윈도우 얻어오는 방법 (0) | 2022.03.11 |
MFC 커스텀컨트롤에서 CWnd의 OnCreate 불리지 않는 문제 해결법 (0) | 2022.03.09 |
COM 객체에 대해서 비주얼스튜디오(Visual Studio)에서 인텔리센스 사용하기 (0) | 2021.10.04 |
윈도우 할당 메모리 개념(Private, Virtual, WorkingSet) (0) | 2017.04.16 |
32bit 윈도우 어플리케이션 사용 가능 최대 메모리 (확장 옵션 설명 포함) (0) | 2017.03.19 |
64bit 윈도우 프로그래밍 (0) | 2009.08.21 |