验证MFC OnTimer例程中的UpdateData(true)返回值

时间:2018-01-25 13:40:52

标签: c++ timer mfc

我正在研究MFC应用程序(VS2017)。 在那我有一个秒钟计时器。在OnTimer()例程和我的业务逻辑中,我调用UpdateData(FALSE)向UI显示一些运行时信息。

此外,我必须从用户输入事件处理程序中的UI获取一些用户输入,我调用UpdateData(TRUE)并在OnTimer例程中检查其返回值。

问题是因为计时器在这里是一个独立的实体。即使我已经在UpdateData(FALSE)内部OnTimer守护了UpdateData(FALSE),但是正在执行空白用户输入,这会通过调用assert来崩溃程序。

/***SAMPLE Problem CODE****/`
void abc::OnEnUserInput()
{
    IsvalidInput = UpdateData(TRUE);
}

void abc::OnTimer(UINT_PTR nIDEvent)
{
    if (IsvalidInput == true) 
    {
     UpdateData(FALSE);
    }
}

任何帮助将不胜感激!!! 感谢。

1 个答案:

答案 0 :(得分:0)

早些时候得到了我的解决方案,但是由于忙碌的时间表没有时间分享它。

为了避免此问题,我打开了另一个对话框来接收用户输入,因为UpdatedData(FALSE)中的OnTimer()位于后台对话框中,因此子对话框UpdateData(TRUE)中的用户输入不会进行背景为UpdatedData(FALSE)