MFC - 如何在运行时更新编辑框? (C++)
Posted
技术标签:
【中文标题】MFC - 如何在运行时更新编辑框? (C++)【英文标题】:MFC - How to update edit box on runtime? (C++) 【发布时间】:2016-01-15 13:36:10 【问题描述】:我有一个 MFC 程序(游戏),它在编辑框上向玩家显示分数,我创建了一个变量名 m_score,我想在每次调用特定函数时更新它。所以这很简单,++m_score。但是如何更新编辑框本身? 谢谢!
【问题讨论】:
与CEdit::SetWindowText()
(继承自CWnd
)?
您应该考虑使用静态控件,尤其是在不允许用户更改值的情况下。
帮自己一个忙,获取 Charles Petzold 的 Programming Windows®, Fifth Edition 的副本。在您非常熟悉 Windows API 之前,不要接触 MFC。完成后,如果您决定使用 MFC,请联系 Jeff Prosise'Programming Windows with MFC, Second Edition。跳过任何一个资源都不会让你有任何收获。
@IInspectable 我知道,我希望我有时间。
【参考方案1】:
快速解决方法是拨打SetWindowText
即:
CString s;
s.Format(_T("%d"), m_score);
m_Edit.SetWindowText(s);
其他解决方案是DDX,所以在你的 void CGameDlg::DoDataExchange(CDataExchange* pDX) 中,添加:
DDX_Text(pDX, IDC_EDIT1, m_score); // here I assume IDC_EDIT1 is your editbox resorce id
现在,在更改 m_score 调用 UpdateData(FALSE);
以将 m_score 数据放入编辑框后;
【讨论】:
我正在尝试使用 DDX 解决方案。我在哪里调用 UpdateData(false)?我不能在更新 m_score 后立即调用它,因为它在不同的函数上。抱歉,我是 MFC 的新手 @Gil 没办法,你必须在更新 m_score 之后调用它,如果这真的太麻烦了,你可以设置一个计时器,每隔一秒更新一次 score。 其实如果score经常更新的话,即。每 200 毫秒,那么计时器还不错。 我会改写:如何调用 UpdateData(false)?当我在 ++m_score 之后键入它时,程序(显然)冻结了。所以我想我在这里缺少一些语法。 为什么很明显?确保在主线程上调用它并且它应该可以工作。以上是关于MFC - 如何在运行时更新编辑框? (C++)的主要内容,如果未能解决你的问题,请参考以下文章