gpt4 book ai didi

c++ - MFC 执行 while 循环

转载 作者:行者123 更新时间:2023-11-28 07:30:55 25 4
gpt4 key购买 nike

我正在做一个测量系统,我的程序中有一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com