MultiByteToWideChar 함수의 이해와 사용법2015. 10. 16. 18:58
MultiByteToWideChar 함수가
무엇인지 이해하고 사용해보자!
MultiByteToWideChar 함수
이 함수는 ANSI 문자열에서 유니코드로의 변환이 필요할 때 사용합니다
*****
ANSI 문자열 : 아마도 아스키코드로 입력된 문자열 => MultiByte
유니코드 : 사용중인 플랫폼, 프로그램, 언어에 관계없이 문자마다 고유한 숫자를 제공 => WideChar
*****
함수의 원형
INT
MultiByteToWideChar ( _In_ UINTCodePage, //변환할 O/S의 코드페이지, 주로 CP_ACP를 사용
_In_ DWORD dwFlags, //어떤 char 형태로할 변환할 것인지 _In_ LPCSTR lpMultiByteStr, //유니코드로 변환할 문자열 포인터 _In_INT
cbMultiByte, //유니코드로 변환할 문자열의 길이
_Out_opt_ LPWSTR lpWideCharStr, //변환된 문자열을 저장할 버퍼의 포인터 _In_INT
cchWideChar //변환된 문자열을 저장할 버퍼의 길이
);
사용예시 )
Image* img;
char* fileName = "겨울동화룰루.png";
WCHAR file[MAX_PATH];
MultiByteToWideChar(CP_ACP, NULL, fileName, -1, file, MAX_PATH);
img = Image::FromFile(file);
cf.
gdi+ 에서 Image::FromFile 함수를 사용할 때
그대로 "겨울동화룰루.png" 를 넣고싶으면
Image::FromFile(L"겨울동화룰루.png");
L 을 붙여줘야한다
/////////////////////////////////////////////////////////////////////////////////////
WCHAR : 16bit 유니코드 char
MAX_PATH : 드라이브, 폴더경로, 파일명, 널문자까지 합한 최대길이 (260)
함수예시에서 문자열의 길이인데 -1 을 사용한 이유 :
이 파라미터가 -1이면, 기능은 널 종료 문자를 포함하는 전체 입력 스트링을 처리한다. 따라서, 생성 된 유니 코드 문자열은 널 종료 문자를 갖고, 함수에 의해 리턴 된 길이는이 문자를 포함한다.
출처 - MSDN
즉, 문자열에는 \0 이라는 널문자가 저장되는데, 그것을 만날때까지의 전체 길이를 처리한다는 의미
'API · MFC' 카테고리의 다른 글
[API/GDI+] Graphics.DrawRectangle (0) | 2015.12.04 |
---|---|
[API] WPARAM , LPARAM (0) | 2015.10.28 |
[API] Graphics.DrawImage (Image*, INT x, INT y, INT srcx, INT srcy, INT srcwidh, INT srcheight, Unit) 함수 정리 (0) | 2015.10.26 |
[API] GetAsyncKeyState 함수 정리 (0) | 2015.09.24 |
[API] 마우스 커서 위치 받아오기 (1) | 2015.09.24 |