添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
[in, optional] HWND hWnd, [in] UINT_PTR nIDEvent, [in] UINT uElapse, [in, optional] TIMERPROC lpTimerFunc

parameters

[in, optional] hWnd

类型: HWND

要与计时器关联的窗口的句柄。 此窗口必须由调用线程拥有。 如果 hWnd NULL 值与现有计时器的 nIDEvent 一起传入,则将按照现有非 NULL hWnd 计时器的相同方式替换该计时器。

[in] nIDEvent

类型: UINT_PTR

非零计时器标识符。 如果 hWnd 参数为 NULL ,并且 nIDEvent 与现有计时器不匹配,则忽略它并生成新的计时器 ID。 如果 hWnd 参数不为 NULL ,并且 hWnd 指定的窗口已有一个值为 nIDEvent 的计时器,则现有计时器将替换为新的计时器。 当 SetTimer 替换计时器时,计时器将重置。 因此,将在当前超时值过后发送消息,但忽略以前设置的超时值。 如果调用不打算替换现有计时器,则 如果 hWnd NULL 则 nIDEvent 应为 0。

[in] uElapse

类型: UINT

超时值(以毫秒为单位)。

如果 uElapse 小于 USER_TIMER_MINIMUM (0x0000000A) ,则超时设置为 USER_TIMER_MINIMUM 。 如果 uElapse 大于 USER_TIMER_MAXIMUM (0x7FFFFFFF) ,则超时设置为 USER_TIMER_MAXIMUM

[in, optional] lpTimerFunc

类型: TIMERPROC

指向在超时值过后要通知的函数的指针。 有关 函数的详细信息,请参阅 TimerProc 。 如果 lpTimerFunc NULL ,系统会将 WM_TIMER 消息发布到应用程序队列。 消息的 MSG 结构的 hwnd 成员包含 hWnd 参数的值。

类型: UINT_PTR

如果函数成功且 hWnd 参数为 NULL ,则返回值为标识新计时器的整数。 应用程序可以将此值传递给 KillTimer 函数以销毁计时器。

如果函数成功且 hWnd 参数不为 NULL ,则返回值为非零整数。 应用程序可以将 nIDEvent 参数的值传递给 KillTimer 函数以销毁计时器。

如果函数无法创建计时器,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。

应用程序可以通过在窗口过程中包括 WM_TIMER case 语句或在创建计时器时指定 TimerProc 回调函数来处理 WM_TIMER消息。 指定 TimerProc 回调函数时,DispatchMessage 会在使用非 NULL lParam 处理 WM_TIMER 时调用回调函数,而不是调用窗口过程。 因此,即使在使用 TimerProc 而不是处理 WM_TIMER 时,也需要在调用线程中调度消息。

WM_TIMER 消息的 wParam 参数包含 nIDEvent 参数的值。

计时器标识符 nIDEvent 特定于关联的窗口。 另一个窗口可以有自己的计时器,其标识符与另一个窗口拥有的计时器相同。 计时器是不同的。

如果 hWnd NULL SetTimer 可以重复使用计时器 ID。

在使用 SetTimer 或其他与计时器相关的函数之前,建议通过 SetUserObjectInformationW 函数将 UOI_TIMERPROC_EXCEPTION_SUPPRESSION 标志设置为 false ,否则应用程序的行为可能不可预知,并且容易受到安全漏洞的攻击。 有关详细信息,请参阅 SetUserObjectInformationW

有关示例,请参阅 创建计时器