报错情况:
MFC 错误;VS2010
解决
1
s_msg.Format(_T("%s"),buf);
2
s_msg.Format(L"%s",buf);
解释:
注意:
字符(串)有两种类型,char()和wchar_t()型,分别用于多字节字符和unicode字符,两种类型分别有一套对应的字符串处理函数(包括C/C++标准库,WindowsAPI,MFC等)。MFC的类和函数会根据工程设置(默认为wchar_t)自动匹配,因此这时Format要求的字符串参数为wchar_t*,所以要在字符串前加上 “L” 表示是wchar_t型字符串,或者加上 _T() ,_T同样会根据工程设置自动匹配char或wchar_t。
同样的有:
SetWindowText其实也有两个函数SetWindowTextA(用于char)和SetWindowTextW(用于wchar_t),而SetWindowText本身会根据工程设置自动匹配使用A或W