안녕하세요. 애드소프트 입니다.
이전 포스팅을 해보셨다면 약간 생소한 데이터 형을 많이 보셨을 것입니다.
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에서 많이 사용됩니다.
다른 데이터형도 많이 쓰이지만 윈도우에 있는 데이터형만 추려보았습니다.
포스팅을 이만 마치도록 하겠습니다.
감사합니다.
'개발기록 > 윈도우즈개발' 카테고리의 다른 글
MFC의 기본적인 클레스에 대해서 알아보자. (0) | 2021.04.02 |
---|---|
오랜만에 다시 해보는 MFC개발...List Control 사용하기 (0) | 2021.04.02 |
오랜만에 다시 해보는 MFC 개발... ListBox 사용하기 (0) | 2021.04.01 |
Windows 데이크톱 마법사 무엇일까? (2) 화면구성 방법 (0) | 2021.04.01 |
Windows 데이크톱 마법사 무엇일까? (1) (0) | 2021.04.01 |