c++ - MFC 执行 while 循环

标签 c++ mfc while-loop do-while

我正在做一个测量系统,我的程序中有一个 do while 循环。在循环中,它会在进行测量之前检查是否有任何电机在移动,因为它需要在执行任何操作之前到达目标位置。

在进行测量时,它应该告诉我进行此测量需要多长时间。

但是,每当它在 do while 循环中运行时,我所有的计时器功能都会停止,就好像它们进入了 sleep 模式一样。

还有其他方法可以实现吗?如果有,请帮助我。

如有任何帮助,我们将不胜感激。

SetTimer(TIMERECHO, 1000, NULL);

BOOL bMoving = FALSE;
do
{
    if (IsMoving(ID, NULL, &bMoving)) 
        GetPosition();
} while (bMoving);


void CLHMDlg::OnTimer(UINT_PTR nIDEvent)
{
    // TODO: Add your message handler code here and/or call default
    switch(nIDEvent)
    {
        case TIMERECHO:
            UpdateData(FALSE);
            m_Seconds++;
            m_TimerEcho.Format(_T("Total time: %ds"), m_Seconds);
            break;
    }
    CDialogEx::OnTimer(nIDEvent);
}

最佳答案

MFC 有一个消息循环,可以获取和分发 WM_TIMER 等消息。如果您执行 while 循环,则消息循环不会运行。它不是在 sleep ,它只是在等你停止占用处理器。

您有两个选择:(1) 摆脱冗长的循环并定期对 WM_TIMER 消息执行任何操作。 (2) 使用第二个线程做冗长的操作。这对初学者来说有很多困难。

关于c++ - MFC 执行 while 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17736916/

相关文章:

c++ - 在 SDI : where to disable menu, 代码在 MDI 中正常

c# - 从 C++ 启动 C# 应用程序并在该应用程序上执行任务

c++ - 使用 ifstream 在 while 循环中将数据传递给 vector

c++ - 程序永远不会到达我可以输入信息的部分

c++ - 如何将窗口置于通过 CreateProcess 创建的进程之上

c++ - 将 char* 转换为 int arduino

c++ - unordered_map 的有序版本?

c++ - 获取文本中两个非唯一字符串之间的子字符串

c++ - 函数在 h 文件上内联发布版本,并在 cpp 上实现调试版本

php - 如何在另一个查询的 while 循环中运行一个 sql 查询