如何让 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()
,两者都可以创建一个真正的一次性计时器。
是否可以让 SetTimer()
只发送一条 WM_TIMER
消息,而不是每次指定时间过去后都发送一条新消息?当我收到 WM_TIMER
消息以停止计时器时,我目前正在使用 KillTimer()
。我应该继续这样做还是有另一种方法可以自动指定它?
不,SetTimer
总是重复。只需在您的 WM_TIMER
处理程序中将其杀死即可停止发送另一个。
SetTimer()
仅创建周期性计时器。使其成为一次性计时器的唯一方法是在第一条 WM_TIMER
消息上终止计时器,正如您已经在做的那样。
否则,更改您的计时器逻辑,以便您可以使用 CreateWaitableTimer()
or timeSetEvent()
,两者都可以创建一个真正的一次性计时器。