【问题标题】:Need to add two numbers in MFC with using CString veriables需要使用字符串变量在 MFC 中添加两个数字
【发布时间】:2020-02-02 01:51:12
【问题描述】:

我想在 MFC 中使用 CString 变量添加两个数字。 例如: CString m_nedit1, CString m_nedit2 我需要将它存储在 CString m_nedit3 中。

所有三个编辑控件都是值类型(CString)而不是控件类型

请提供你的答案。

【问题讨论】:

  • 不清楚你在问什么。您是否在一个对话框中有两个编辑框,并且您想从对话框中检索文本作为数值,并且您想添加这些数字?
  • 是的,我在对话框中有三个编辑框和按钮,当双击按钮edit1和编辑2时,应该计算并在第三个编辑控件上显示它。所有三个编辑控件都是值类型( CString) 不是控件类型。
  • 数字应该是整数还是浮点数?
  • 它们应该是 intdoulbe 类型的值类型,但不是 CString 类型的值。
  • 我不想定义任何 int 或 float 类型,我只想定义 CString 类型,稍后需要将其转换为 int 类型..

标签: visual-c++ mfc


【解决方案1】:

这是Dialog Data Exchange的问题

按下按钮时,您想使用UpdateData(TRUE) 设置CString 控件值m_nedit1m_nedit2

然后您以“计算”的任何方式构建您的m_nedit3 字符串。然后将更改同步回带有UpdateData(FALSE) 的对话框控件。

例如,假设您的意思是串联:

UpdateData(TRUE);
m_nedit3 = m_nedit1 + m_nedit2;
UpdateData(FALSE);

您应该处理 UpdateData(FALSE) 返回 FALSE 的情况。这意味着同步因您可能施加的任何 DDV 条件而失败,例如最大字符串长度。

【讨论】:

    【解决方案2】:

    虽然您可以同步到 int 类型,但也可以使用 CString。你需要先转换成int add,然后再转换回CString。

    UpdateData();
    int nAnswer = _ttoi(m_nedit1) + _ttoi(m_nedit2);
    m_nedit3.Format(_T("%d"),nAnswer);
    UpdateData(FALSE);
    

    【讨论】:

      猜你喜欢
      • 2015-01-23
      • 2020-11-30
      • 2015-07-14
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 2016-01-27
      • 1970-01-01
      • 2016-06-29
      相关资源
      最近更新 更多