CDialog更新输入框值

Posted

技术标签:

【中文标题】CDialog更新输入框值【英文标题】:CDialog update input box value 【发布时间】: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); 【参考方案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 系列函数的区别在备注部分进行了说明。

以上是关于CDialog更新输入框值的主要内容,如果未能解决你的问题,请参考以下文章

js监听输入框值的即时变化onpropertychangeoninput

如何在不更改选择框值的情况下选择选择框时更改html中的输入框值

如何使用 Javascript 从输入框值中获取总和?

jquery实时监听输入框值变化

如何使用javascript验证动态生成的输入框值

如何从表单获取输入框值到iframe?