아래는 ANSI 문자열에서 유니코드로의 변환 방법코드다.(MultiByteToWideChar)
여기서 SysAllocStringLen를 사용해서 메모리 할당 하게되면
SysFreeString로 메모리를 해제 해야 메모리가 올라가지 않는다.
(옛날 코드 보면 SysFreeString 없이 사용하기도 하는데 메모리 반환이 언제되는지 모름)
// sTime이란 ANSI 문자열을 bstr이란 이름의 유니코드(BSTR 타입) 변수로 변환
char sTime[] = "유니코드 변환 예제";
BSTR bstr;
// sTime을 유니코드로 변환하기에 앞서 먼저 그 길이를 알아야 한다.
int nLen = MultiByteToWideChar(CP_ACP, 0, sTime, lstrlen(sTime), NULL, NULL);
// 얻어낸 길이만큼 메모리를 할당한다.
bstr = SysAllocStringLen(NULL, nLen);
// 이제 변환을 수행한다.
MultiByteToWideChar(CP_ACP, 0, sTime, lstrlen(sTime), bstr, nLen);
// 필요없어지면 제거한다.
SysFreeString(bstr);