int MultiByteToWideChar(
UINT CodePage,
DWORD dwFlags,
LPCSTR lpMultiByteStr,
int cbMultiByte,
LPWSTR lpWideCharStr,
int cchWideChar
);
Maps a character string to a wide character (Unicode) string. The character string mapped by this function is not necessarily from a multibyte character set.
기능은 (MBCS형 문자열) -> (유니코드 문자열) 로 코드 페이지에 따라 변환...입니다.
자세히 설명하자면,
1) CodePage 는 문자 그대로 MS 에서 정한 국가 코드이자 문자열 변환 관리 코드입니다. 물론, 한 국가가 여러 코드를 쓰거나, 여러 국가가 한 코드를 쓰는 나라들도 있을 수 있지만, 어쨌든 한국은
입니다. 상수를 그대로 써도 되지만 CP_ACP 등의 defined 상수를 쓰는 것이 가독성이 좋을 겁니다.
949
ANSI/OEM - Korean (Unified Hangul Code)
2) lpMultiByteStr 는 MBCS 형 문자열입니다. 즉, 문자 한글자가 한 바이트일 수도 있고, 두개/ 세개의 바이트로도 이루어 질 수 있는 문자열을 의미합니다. 그리고, cbMultiByte 는 그 문자열의 길이를 의미 합니다. 물론 이 값이 -1이면, null로 끝나는 문자열로 인식하고 문자열을 처리합니다.
3) lpWideCharStr 는 변환될 유니코드 문자열입니다. 당연히 입력값보다는 크고 넉넉한 버퍼를 잡아야 합니다. 그리고 그 버퍼 길이는 cchWideChar 입니다.
반환값으로 0 이 오면 실패, 아니면 성공입니다. 이 때, GetLastError() 로 오류를 알 수 있으며, 대부분 버퍼 크기 관련 오류 입니다. (작은 출력 버퍼를 잡았거나, 너무 큰 입력 버퍼의 설정, 코드 페이지에 따른 변환 실패 등등등)
출처 : MSDN
'C, C++' 카테고리의 다른 글
MFC 9.0 Beta (0) | 2008.04.07 |
---|---|
Shift Operaotr (0) | 2008.03.28 |
구조체 멤버의 오프셋 얻기 (0) | 2007.10.12 |
로케일 문자열 길이 (0) | 2007.09.08 |
32비트 윈도우즈에서의 자료형 (2) | 2007.09.04 |