具有唯一ID的SetTimer

时间:2014-08-29 15:06:54

标签: windows winapi timer

我想为一个窗口设置一个计时器,但我不知道该窗口是否已经有计时器运行。如果它,我不想覆盖任何这些,所以我需要选择一个免费的计时器ID。在我的情况下,MSDN没有帮助,它们几乎描述了所有排列,除非你有一个hwnd并且不想更换计时器。

所以,如果它可以给0或者某些东西作为nIDEvent,让Windows自动创建一个新的uniqe id,或者是否有某种方法列出当前正在运行的计时器,那么我可以避免使用其中任何一个?< / p>

SetTimer的MSDN:http://msdn.microsoft.com/en-us/library/windows/desktop/ms644906%28v=vs.85%29.aspx

1 个答案:

答案 0 :(得分:0)

@Jonathan Potter说, 你可以这样写:

VOID CALLBACK TimerCallback(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime)
{
    BOOL bRetKill = ::KillTimer(NULL, idEvent);
    // do something
}

void CSomeModel::StartTimer()
{ 
    UINT_PTR hSetTimer = ::SetTimer(NULL, 0, 1000, TimerCallback);
}

每次调用:: SetTimer时,idEvent ID都是唯一的。