问问题
232 次
1 回答
0
由于在我的编译中 LPCTSTR 是 16 位的,std::string 的 8 位 c_str() 被误解了。它必须转换为 wstring,并且只有其中的 c_str() 正确设置了值。
#include <locale>
void MyDialog::SetDlgItemStdString(UINT id, std::string entry)
{
#ifndef UNICODE
SetDlgItemText(id, LPCTSTR(entry.c_str()));
#else
std::wstring_convert<std::codecvt<wchar_t, char, std::mbstate_t>> conv;
std::wstring entry_wstring = conv.from_bytes(entry);
SetDlgItemText(id, LPCTSTR(entry_wstring.c_str()));
#endif
}
于 2016-07-13T13:44:57.390 回答