我想为一个窗口设置一个定时器,但我不知道那个窗口是否已经有定时器在运行。如果是这样,我不想覆盖其中任何一个,所以我需要选择一个免费的计时器 ID。 MSDN 对我的情况没有帮助,他们描述了几乎所有的排列,除非你有一个 hwnd 并且不想更换计时器。
因此,如果可以将 0 或其他内容作为 nIDEvent 并让 Windows 自动创建一个新的 uniqe id,或者是否有某种方法可以列出当前正在运行的计时器以便我可以避免使用其中的任何一个?
SetTimer 的 MSDN:http://msdn.microsoft.com/en-us/library/windows/desktop/ms644906%28v=vs.85%29.aspx
最佳答案
正如@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 都是唯一的。
关于windows - 具有唯一 ID 的 SetTimer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25571092/