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

时间:2015-03-19 00:54:36

标签: c winapi

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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:3)

SetTimer()仅创建一个周期性计时器。使其成为一次性计时器的唯一方法是在第一个WM_TIMER消息上终止计时器,就像你现在一样。

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