【问题标题】:Taking input from editbox as displaying the result [closed]从编辑框中获取输入显示结果[关闭]
【发布时间】:2021-12-19 18:15:55
【问题描述】:

我目前正在开发一个 MFC C++ 程序,该程序将数学表达式作为输入并显示结果。但我无法从编辑框中阅读。输入并显示的代码如下:

{   

    char input[50];
    sprintf_s(input, "%d", IDC_EDIT1); 
    len = strlen(input);
    ...
    ...
    CString s;
    s.Format(_T("%.2f"), mCurVal);
    SetDlgItemText(IDC_EDIT1, s);

}

IDC_EDIT1 是来自编辑框的输入。我想将其更改为 char,以便能够调用每个字符并计算数学运算。我提交的中间部分效果很好,所以我尝试了一切以查看问题出在哪里,并且似乎在前 3 行中。谁能帮帮我?

【问题讨论】:

  • sprintf_s(input, "%d", IDC_EDIT1); - 这没有意义。那应该完成什么?
  • 我最初使用 sprintf 将 int 更改为 char 但将其更改为 sprintf_s 因为它一直给我警告。 Sprintf 也输出相同的内容。无论我输入什么数字,我都会得到 1000 作为输出
  • IDC_EDIT1是编辑框的资源ID(在资源文件中),和值没有任何关系。
  • 是的,我想获取我在编辑框中插入的值,这就是我使用 ID IDC_EDIT1 的原因。这不是我应该做的吗?
  • 不,这不是您访问控件内容的方式。你已经知道SetDlgItemText。要执行相反的操作,您可以调用GetDlgItemText。但是,使用 MFC,您可能无论如何都不想手动执行此操作。只需将CString 变量绑定到控件,然后让 DDX 执行其他所有操作。实际上,不懂 Windows API 的人熟练使用 MFC 的机会为零。

标签: c++ string mfc char integer


【解决方案1】:

你想要这个:

{   
    CString input;
    GetDlgItemText(IDC_EDIT1, input);
    len = input.GetLength();
    ...
    CString s;
    s.Format(_T("%.2f"), mCurVal);
    SetDlgItemText(IDC_EDIT1, s);
}

如果您使用 MFC,请忘记像 char input[50]; 这样的字符数组,您几乎可以一直使用 CString

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-29
    • 1970-01-01
    相关资源
    最近更新 更多