如何让 SetTimer() 只发送一条 WM_TIMER 消息?

How to make SetTimer() only send one WM_TIMER message?

是否可以让 SetTimer() 只发送一条 WM_TIMER 消息,而不是每次指定时间过去后都发送一条新消息?当我收到 WM_TIMER 消息以停止计时器时,我目前正在使用 KillTimer()。我应该继续这样做还是有另一种方法可以自动指定它?

不,SetTimer 总是重复。只需在您的 WM_TIMER 处理程序中将其杀死即可停止发送另一个。

SetTimer() 仅创建周期性计时器。使其成为一次性计时器的唯一方法是在第一条 WM_TIMER 消息上终止计时器,正如您已经在做的那样。

否则,更改您的计时器逻辑,以便您可以使用 CreateWaitableTimer() or timeSetEvent(),两者都可以创建一个真正的一次性计时器。