【问题标题】:CDialog update input box valueCDialog更新输入框值
【发布时间】:2015-07-24 16:49:30
【问题描述】:

我正在使用 CDialogs 和 mfc。我的对话框加载,有两个输入框和一个按钮。当我单击按钮时,我希望输入框中的值发生变化。我目前的尝试是这样的

void
CInstanceNumberDlg::updateLeftRange(int i) {
GetDlgItem(IDC_2NDDERIV_WT)->SetWindowText((LPCTSTR)i);
UpdateData(false);
UpdateWindow();
}

我还尝试了其他组合,包括 UpdateData() 和 UpdateWindow()。正在使用有效整数访问此方法,并且该 ID 应该是有效的。

如何获取要修改的输入框中的值?

谢谢

【问题讨论】:

  • SetWindowText 需要文本。将 int 转换为文本是无效的。尝试从您的整数创建一个字符串(MFC 中的 CString)并将该字符串传递给 SetWindowText。
  • 你也可以试试SetDlgItemInt(IDC_2NDDERIV_WT, i);

标签: c++ mfc modal-dialog


【解决方案1】:

你的问题是这一行:

GetDlgItem(IDC_2NDDERIV_WT)->SetWindowText((LPCTSTR)i);

i 不是指向字符串的指针,因此不应将其转换为 LPCTSTR。您需要将i 的值转换为字符串,然后将指向结果字符串的指针传递给SetWindowText()。而且我认为您不需要UpdateData()UpdateWindow()。例如:

void CInstanceNumberDlg::updateLeftRange(int i)
{
  TCHAR tszValue[32];

  StringCchPrintf(tszValue, _countof(tszValue), TEXT("%d"), i);
  GetDlgItem(IDC_2NDDERIV_WT)->SetWindowText(tszValue);
}

【讨论】:

  • 在 sprintf 上使用 StringCchPrintF 有什么好处吗?
  • @pasquers:StringCchPrintf 和 printf 系列函数的区别在备注部分进行了说明。
猜你喜欢
  • 2020-05-16
  • 1970-01-01
  • 2017-06-25
  • 2017-09-11
  • 2019-04-04
  • 2017-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多