L"문자열" == 유니코드
_T(""), TEXT("") == t_char
TCHAR == t_char // 컴파일 타임에... 바이트 결정
WCHAR == w_char // 와이드..
LP = long pointer
STR = string
C = constant
T = t_char
W = w_char
LPSTR == char *
LPCSTR == const char *
LPCTSTR == const t_char *
LPWSTR == w_char *
LPCWSTR == const w_char *
(LPSTR)(LPCTSTR) == (char *)(const char *)
CString ttt;
(LPCTSTR)ttt == ttt 안의 const char * 버퍼 위치 (연산자 오버로딩)
(LPSTR)(LPCTSTR)ttt == ttt 안의 내용물을 char * 형으로 사용
ttt.GetBuffer(ttt.GetLength()) == LPTSTR 버퍼 위치
C 프로그래머들은 "어쩌다보니" const char *와 char *를 구분하지 않고 쓰는 경우가 많다.
나도 이 구닥다리 버릇 고쳐야 되는데..
char pO[256];
CString m_ctrlUpListFile;
wchar_t *tO = m_ctrlUpListFile.GetBuffer(0);
WideCharToMultiByte(CP_ACP, 0, tO, -1, pO, 128, NULL, NULL);
m_ctrlUpListFile.ReleaseBuffer();