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