1,_T宏和不使用_T宏的区别
MessageBox("你好")在Unicode版本的程序里面不能通过编译,因为MessageBoxW不能用ANSI的字符串作参数,MessageBox(_T("你好"))就可以。
当定义了UNICODE 或_UNICODE时, _T() 就相当于L"",也就是说把括号里的字符变成了16B字符。
2,LPSTR,LPWSTR and LPTSTR
LPSTR Pointer to a null-terminated string of 8-bit Windows (ANSI) characters.
LPWSTR Pointer to a null-terminated string of 16-bit Unicode characters. For more information.
LPTSTR is An LPWSTR if UNICODE is defined, an LPSTR otherwise.
LPCSTR,LPCWSTR and LPCTSTR 就是多了一个constant属性。
3, CString, LPSTR, char* 的转换
char*转换成CString
char chArray[] = "This is a test";
LPTSTR p = _T("This is a test");
CString theString ;
theString = p; // 直接
theString = chArray;// 直接转换
theString.format(_T("%s"), chArray); // 用format
CString转换成chLPTSTR
LPTSTR lpsz =(LPTSTR)(LPCTSTR)theString; // 强转换
LPTSTR p = s.GetBuffer(); // 这样可以修改