工具:VS2012
项目类型:MFC DLL项目
问题简述:DLL里面有个窗体,窗体上有几个“Edit Control” 控件,然后“Edit Control”添加了控件变量“m_edit",用于存放控制“Edit Control”的显示内容的数据,但是我试了好多,显示出来都是乱码
参考链接:vs2017下关于MFC中string用CString中Format转换出现乱码错误
错误尝试一:
string str = "Hello 世界";
m_edit12.SetWindowText(str4.c_str());
//报错”Const char*"类型的实参与“LPCTSTR"类型的形参不兼容
错误尝试二:
string str = "hello 世界";
CString CS1;
CS1.Format(_T("%s"),str);
m_edit12.SetWindowText(CS1);
//编译没报错,但是显示乱码
错误尝试三:
string str = "hello 世界";
CString CS1;
CS1.Format(_T("%s"),str.c_str());
m_edit12.SetWindowText(CS1);
//编译没报错,但是显示乱码(PS:与上一个尝试的乱码内容不一样)
正确方法:
string str = "hello 世界";
CString CS1;
char c[20];
strcpy_s(c, str.c_str());
CS1.Format(_T("%s"),CStringW(c));
m_edit12.SetWindowText(CS1);