我需要使用具有相同EventID的:: SetTimer函数的多个计时器。这可能/一个好主意用:: CreateWindow创建多个窗口句柄,然后将每个计时器分配给创建的窗口句柄?还有其他选择吗?
编辑:无论如何,我只想知道这里发生了什么:
int eventID = 0;
hWnd1 = ::CreateWindow(...);
hWnd2 = ::CreateWindow(...);
::SetTimer(hWnd1, eventID, ...);
::SetTimer(hWnd2, eventID, ...);
每个hWnd都有自己的eventID列表吗?他们是独立处理的吗?我不想讨论这种设计是否有意义。
答案 0 :(得分:3)
来自http://msdn.microsoft.com/en-us/library/ms644906%28v=vs.85%29.aspx
计时器标识符nIDEvent是 特定于相关窗口。 另一个窗口可以有自己的计时器 它具有与a相同的标识符 另一个窗口拥有的计时器。该 定时器是截然不同的。
答案 1 :(得分:0)
如果您使用相同的EventID,您应该可以使用相同的计时器,但间隔时间不同。您可以使用KillTimer()简单地删除旧版本,然后使用SetTimer()创建另一个,或多或少会触发。如果你的情况不可能,那很可能你的程序设计存在缺陷。
考虑使用不同的EventID,并为我们提供更多信息,说明为什么你觉得这样做是必要的。你很可能不想创建随机窗口,如果他们只是为了让定时器消息注册到他们的目的。这听起来像是一个混乱的黑客,会产生不必要的计算和低效的开销。
当然,计时器实际上并不要求你将hWnd与它相关联。 hWnd是可选的,您可以将计时器与回调(lpTimerFunc)相关联。
答案 2 :(得分:0)