SetDlgItemText函数怎么显示浮点数

                sprintf_s(szBuffer, "%f", 3.1415);
                SetDlgItemText(hwnd, IDC_AMP1, (LPCWSTR)szBuffer);

                这样显示出来是乱码求正解 。

是否是乱码与你的环境的编码有关系,还有与你的对话框Dialog的语言设置也有关系,检查这2处》
如果是UNICODE编码切对话框是中文:
CString str;
str.format(T"%f",3.1415);
SetDlgItemText(hwnd, IDC_AMP1, str);
如果不是UNICODE编码切对话框是中文
CStringA str;
str.format(T"%f",3.1415);
SetDlgItemText(hwnd, IDC_AMP1, str)

  1. 把szBuffer定义为宽字节字符数组;
  2. 用wsprintf_s函数填充

CString strBuffer;
strBuffer.format(L"%f",3.1415);
SetDlgItemText(hwnd, IDC_AMP1, strBuffer);

sprintf_s(szBuffer, "%f", 3.1415);
SetDlgItemText(hwnd, IDC_AMP1, (LPCTSTR)szBuffer);
函数setdlgitemtext中第三个参数类型为LPCTSTR,不是lpcwstr。

采用了UNICODE编码,
可以用
a.Format(L "%d ", b);
或者
a.Format(_T( "%d "), b);
即:strNumber.Format(_T("%.2f "), tim.getTimeMilli());

CString strBuffer;
strBuffer.format(L"%f",3.1415);
SetDlgItemText(hwnd, IDC_AMP1, strBuffer);

std::string strBuffer = "3.1415";
std::wstring wstrBuffer = ToUtf16(strBuffer);
SetDlgItemText(hwnd, IDC_AMP1, wstrBuffer.c_str());

std::wstring ToUtf16(const char* utf8, size_t len)
{
int len16 = ::MultiByteToWideChar(CP_UTF8, 0, utf8, static_cast(len),
NULL, 0);
wchar_t* ws = STACK_ARRAY(wchar_t, len16);
::MultiByteToWideChar(CP_UTF8, 0, utf8, static_cast(len), ws, len16);
return std::wstring(ws, len16);
}

std::wstring ToUtf16(const std::string& str)
{
return ToUtf16(str.data(), str.length());
}