我想为一个窗口设置一个计时器,但我不知道该窗口是否已经有计时器运行。如果它,我不想覆盖任何这些,所以我需要选择一个免费的计时器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
答案 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都是唯一的。