0
4

1 回答 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 回答