试图了解设置定时器函数在 MFC 中的工作原理

Trying to understand how set timer functions works in MFC

我对 MFC 中的设置定时器功能感到困惑;怎么运行的?它是一个等待定义的时间段还是其他的线程?请有人解释一下。提前致谢。

SetTimer 要求操作系统以指定的时间间隔生成 WM_TIMER 消息。所以计时是在操作系统的多任务处理中完成的,而不是在调用应用程序中。

这不是一个特殊的线程。如果进程拥有 window,则进程的每个 Win32 线程都可以有消息队列。控制台应用程序线程通过 "user32.dll" 函数的第一次调用获得一个。 message/event 驱动的应用程序(如 MFC 应用程序)使用该消息队列。 SetTimer 与 Win32 学究 SetTimer 相同。它指示 OS(是的,不是您的应用程序)在给定的时间间隔内向您的应用程序发出 WM_TIMER 消息。您的应用程序的主消息循环将其分派给您的 MFC Class。如果您设置了 CALLBACK,默认的 windowproc 将调用该 CALLBACK 而不是调度 WM_TIMER 消息。 如果您阻塞主循环(例如通过 Sleep(10000)),则不会发送 WM_TIMER 消息。 计时器消息永远不会达到精确的间隔。如果你想要每 1000 毫秒一个信号,你可以在 1100 之后或 900 获得一个。 WM_TIMER 的根源可以追溯到古代,当时 MS 使用协作式多任务处理作为一个进程的措辞 OS Windows.