yymiaoxin2010
2018-01-22 19:29
采纳率: 72.7%
浏览 1.5k
已采纳

SetDlgItemText函数怎么显示浮点数

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

                这样显示出来是乱码求正解 。
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

7条回答 默认 最新

  • noxiaoxiao 2018-01-23 02:55
    已采纳

    是否是乱码与你的环境的编码有关系,还有与你的对话框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)

    点赞 打赏 评论
  • fcheng5688 2018-01-22 23:54
    1. 把szBuffer定义为宽字节字符数组;
    2. 用wsprintf_s函数填充
    点赞 打赏 评论
  • csulizhang 2018-01-23 00:00

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

    点赞 打赏 评论
  • hany2008 2018-01-23 00:42

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

    点赞 打赏 评论
  • 帝都小道 2018-01-23 00:51

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

    点赞 打赏 评论
  • dadongwang 2018-01-23 02:23

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

    点赞 打赏 评论
  • csulizhang 2018-01-23 07:45

    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());
    }

    点赞 打赏 评论

相关推荐 更多相似问题