유니코드는 16비트의 단일한 값으로 지구상의 모든 문자를 표현할 수 있는 문자 코드 체계이다.
유니코드를 지원하려면 문자형이나 문자열에 대해 C언어의 타입을 바로 쓰지 말고 유니코드 설정에 다라 변경되는 중간 타입을 써야한다.
char -> TCHAR
char* -> LPSTR
const char* -> LPCTSTR
로 쓰면 된다.
TCHAR는 C의 기본 타입 중 하나인 char와 일단 같지만 유니코드로 컴파일 할 때는 wchar_t 타입이 된다. TCHAR 타입의 실제 정의문은 다음과 같이 조건부 컴파일문으로 작성되어 있다.
#ifdef UNICODE
typedef wchar_t TCHAR;
#else
typedef char TCHAR;
#endif
이렇게 작성되어 있기 때문에 char를 바로쓴 소스는 유니코드로 바꿀 때 일일이 소스를 뜯어 고친 후 다시 컴파일해야 하지만 TCHAR라는 중간 타입을 사용하면 프로젝트 설정에 따라 자동으로 변환해 주므로 가급적 char* 보다는 LPSTR 또는 TCHAR*를 쓰는 것이 현명하다.
유니코드용 문자열 함수는 기본 함수에 l을 붙여주면 된다.
strlen -> lstrlen
strcpy -> lstrcpy
strcat -> lstrcah
strcmp -> lstrcmp
sprintf -> wsprintf
유니코드를 지원하려면 문자형이나 문자열에 대해 C언어의 타입을 바로 쓰지 말고 유니코드 설정에 다라 변경되는 중간 타입을 써야한다.
char -> TCHAR
char* -> LPSTR
const char* -> LPCTSTR
로 쓰면 된다.
TCHAR는 C의 기본 타입 중 하나인 char와 일단 같지만 유니코드로 컴파일 할 때는 wchar_t 타입이 된다. TCHAR 타입의 실제 정의문은 다음과 같이 조건부 컴파일문으로 작성되어 있다.
#ifdef UNICODE
typedef wchar_t TCHAR;
#else
typedef char TCHAR;
#endif
이렇게 작성되어 있기 때문에 char를 바로쓴 소스는 유니코드로 바꿀 때 일일이 소스를 뜯어 고친 후 다시 컴파일해야 하지만 TCHAR라는 중간 타입을 사용하면 프로젝트 설정에 따라 자동으로 변환해 주므로 가급적 char* 보다는 LPSTR 또는 TCHAR*를 쓰는 것이 현명하다.
유니코드용 문자열 함수는 기본 함수에 l을 붙여주면 된다.
strlen -> lstrlen
strcpy -> lstrcpy
strcat -> lstrcah
strcmp -> lstrcmp
sprintf -> wsprintf
'프로그래밍 > API' 카테고리의 다른 글
[API] 윈도우 생성.. (0) | 2011.08.02 |
---|---|
[API] 윈도우 클래스 (0) | 2011.08.01 |
[API] 핸들에 대한 이해.. (0) | 2011.07.31 |
[API] API 란 무엇인가. (0) | 2011.07.31 |
[API] API 관련하여.. (0) | 2011.07.31 |