본문 바로가기

programming/MFC

[MFC] LPCTSTR형을 char*형으로 변환

퍼옴 http://deios.kr/399 

요즈음..형변환에 민감해져있네...

-----------
 LPCTSTR형을 char*형으로 변환하는 방법을 알려드리겠습니다.

먼저 소스부분에
USES_CONVERSION;
라고 적어줍니다.

선언된 곳으로 이동해보니
#ifndef _DEBUG
#define USES_CONVERSION int _convert; (_convert); UINT _acp = ATL::_AtlGetConversionACP() /*CP_THREAD_ACP*/; (_acp); LPCWSTR _lpw; (_lpw); LPCSTR _lpa; (_lpa)
#else
#define USES_CONVERSION int _convert = 0; (_convert); UINT _acp = ATL::_AtlGetConversionACP() /*CP_THREAD_ACP*/; (_acp); LPCWSTR _lpw = NULL; (_lpw); LPCSTR _lpa = NULL; (_lpa)
#endif
이따구로 define되어있네요...

그리고 char*로 변환할 LPCTSRT변수를 W2A로 묶어줍니다.

이것도 선언된 곳으로 이동해보니
#define W2A(lpw) (\
((_lpw = lpw) == NULL) ? NULL : (\
(_convert = (lstrlenW(_lpw)+1), \
(_convert>INT_MAX/2) ? NULL : \
ATLW2AHELPER((LPSTR) alloca(_convert*sizeof(WCHAR)), _lpw, _convert*sizeof(WCHAR), _acp))))
이따구로 define되어있습니다.

종합하면 이런 형식이 되겠죠?
USES_CONVERSION;
char *tmp = W2A(LPCTSTR문자열);

아... 헤더파일은
ctlconv.h
입니다