반응형

안녕하세요. 애드소프트 입니다.

 

이전 포스팅을 해보셨다면 약간 생소한 데이터 형을 많이 보셨을 것입니다.

LPCTSTR, LPTSTR와 같이 비슷하지만 다른 데이터형들이 많이 존재하는데 이렇게 나눠진 이유가 있습니다.

눈으로 봐서는 어떤 데이터형인지 잘 알 수 없는 형들이 존재합니다.

 

#ifdef UNICODE
 typedef LPCWSTR LPCTSTR; 
#else
 typedef LPCSTR LPCTSTR;
#endif

선언을 따라가 보면 LPCWSTR 이나 LPCSTR을 애칭을 만들어 주는것을 볼 수 있습니다.

이는 MBCS(멀티 바이트 문자 집합)이라고 하여 DBCS(더블 바이트 문자 집합)라고도 합니다. 이는 1또는 2바이트로 구성되며, 2바이트 보다 큰 문자 집합은 지원되지 않습니다.

 

현재 Windows는 유니코드를 표준으로 사용되고 있습니다.

 

유니코드는 16비트문자 인코딩입니다. 모든 언어에 대해 충분 한 인코딩을 제공 합니다. 모든 ASCII 문자는 유니코드에 확장 문자로 포함됩니다.

 

본론으로 돌아가서 LPCWSTR와 LPCSTR의 차이는 유니코드와 멀티바이트의 차이로 볼 수 있습니다.

LPCWSTR을 따라가보면 다음과 같이 선언되어 있습니다.

typedef const wchar_t* LPCWSTR;

LPCSTR을 따라가보면 다음과 같이 선언되어 있습니다.

typedef const char* LPCSTR;

위와 같이 같은 LPCTSTR 이라도 MBCS를 호환으로 생성했냐에 따라 유니코드 또는 멀티바이트로 동적으로 선언되어 사용됩니다. 두가지는 혼용될 수 없습니다만 Convert 함수를 통해 변환 사용은 가능합니다.

 

MFC에서 많이 사용되는 데이터 형에 대해 알아보겠습니다.

 

BOOL - Boolean 값을 나타내는 정수 값습니다. 0 또는 1 값을 사용하지만 선언은 int 형으로 선언됩니다.

BSTR - 32비트 character 마지막에 NULL로 끝나는 포인터 값을 의미합니다. 

BYTE - 부호없는 8비트 값을 의미 합니다. 네트워크 프로토콜의 단일 octet에 해당하는 8비트 부호없는 값입니다.

LONG - 부호없는 32비트 정수값입니다.

DWORD - 부호없는 32비트 정수이며, MFC에서 상당히 많이 사용하는 데이터형 입니다.

LPARAM - 윈도우 프로시져에서 사용되는 데이터형 중 하나입니다.

WPARAM - LPARAM과 동일합니다.

LPVOID - 32비트 void 포인터입니다.

LRESULT - 윈도우 프로시져나 볼백 할수가 리턴하는 32비트 값입니다.

UINT - 부호없는 32비트 int형입니다.

WNDPROC - 윈도우 프로시저 함수를 포인트하는 32비트 포인트 값입니다.

WORD - 16비트 unsigned int 값입니다.

POSITION - MFC에서 위치를 나타낼때 쓰는 포인터 값입니다.

LPCRECT -  RECT 구조체의 포인트 값입니다.

 

다음 정도의 데이터 형들이 MFC에서 많이 사용됩니다.

다른 데이터형도 많이 쓰이지만 윈도우에 있는 데이터형만 추려보았습니다.

 

포스팅을 이만 마치도록 하겠습니다.

 

감사합니다.

반응형

+ Recent posts