SetTimer 関数 (winuser.h)

指定したタイムアウト値を持つタイマーを作成します。

構文

UINT_PTR SetTimer(
  [in, optional] HWND      hWnd,
  [in]           UINT_PTR  nIDEvent,
  [in]           UINT      uElapse,
  [in, optional] TIMERPROC lpTimerFunc
);

パラメーター

[in, optional] hWnd

型: HWND

タイマーに関連付けるウィンドウへのハンドル。 このウィンドウは、呼び出し元のスレッドによって所有されている必要があります。 hWndNULL 値が既存のタイマーの nIDEvent と共に渡された場合、そのタイマーは、既存の NULL 以外の hWnd タイマーと同じ方法で置き換えられます。

[in] nIDEvent

種類: UINT_PTR

0 以外のタイマー識別子。 hWnd パラメーターが NULL で、nIDEvent が既存のタイマーと一致しない場合は無視され、新しいタイマー ID が生成されます。 hWnd パラメーターが NULL ではなく、hWnd で指定されたウィンドウに nIDEvent 値を持つタイマーが既に存在する場合、既存のタイマーは新しいタイマーに置き換えられます。 SetTimer がタイマーを置き換えると、タイマーはリセットされます。 したがって、現在のタイムアウト値が経過するとメッセージが送信されますが、以前に設定されたタイムアウト値は無視されます。 呼び出しが既存のタイマーを置き換えることを意図していない場合、hWndNULL の場合、nIDEvent は 0 にする必要があります。

[in] uElapse

型: UINT

タイムアウト値 (ミリ秒)。

uElapseUSER_TIMER_MINIMUM未満 (0x0000000A) の場合、タイムアウトは USER_TIMER_MINIMUM に設定されます。 uElapseUSER_TIMER_MAXIMUM (0x7FFFFFFF) より大きい場合、タイムアウトは USER_TIMER_MAXIMUM に設定されます。

[in, optional] lpTimerFunc

種類: TIMERPROC

タイムアウト値が経過したときに通知される関数へのポインター。 関数の詳細については、「 TimerProc」を参照してください。 lpTimerFuncNULL の場合、システムはWM_TIMER メッセージをアプリケーション キューにポストします。 メッセージの MSG 構造体の hwnd メンバーには、hWnd パラメーターの値が含まれています。

戻り値

種類: UINT_PTR

関数が成功し、 hWnd パラメーターが NULL の場合、戻り値は新しいタイマーを識別する整数です。 アプリケーションは、この値を KillTimer 関数に渡してタイマーを破棄できます。

関数が成功し、 hWnd パラメーターが NULL でない場合、戻り値は 0 以外の整数になります。 アプリケーションは、タイマーを破棄するために 、nIDEvent パラメーターの値を KillTimer 関数に渡すことができます。

関数がタイマーの作成に失敗した場合、戻り値は 0 になります。 詳細なエラー情報を得るには、GetLastError を呼び出します。

解説

アプリケーションは、ウィンドウ プロシージャに WM_TIMER case ステートメントを含めるか、タイマーの作成時に TimerProc コールバック関数を指定することで、WM_TIMERメッセージを処理できます。 TimerProc コールバック関数を指定すると、DispatchMessage は NULL 以外の lParam でWM_TIMERを処理するときに、ウィンドウ プロシージャを呼び出す代わりにコールバック関数を呼び出します。 したがって、WM_TIMERを処理する代わりに TimerProc を使用する場合でも、呼び出し元スレッドでメッセージ をディスパッチする必要があります

WM_TIMER メッセージの wParam パラメーターには、nIDEvent パラメーターの値が含まれています。

タイマー識別子 nIDEvent は、関連付けられているウィンドウに固有です。 別のウィンドウは、別のウィンドウが所有するタイマーと同じ識別子を持つ独自のタイマーを持つことができます。 タイマーは異なります。

SetTimer は、 hWndNULL の場合にタイマー ID を再利用できます。

SetTimer またはその他のタイマー関連関数を使用する前に、SetUserObjectInformationW 関数を使用して UOI_TIMERPROC_EXCEPTION_SUPPRESSION フラグを false に設定することをお勧めします。そうしないと、アプリケーションが予期しない動作をし、セキュリティの悪用に対して脆弱になる可能性があります。 詳細については、「 SetUserObjectInformationW」を参照してください。

例については、「 タイマーの作成」を参照してください。

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー winuser.h (Windows.h を含む)
Library User32.lib
[DLL] User32.dll
API セット ext-ms-win-ntuser-window-l1-1-2 (Windows 10 バージョン 10.0.10240 で導入)

関連項目

概念

KillTimer

Msg

リファレンス

SetWaitableTimer

TimerProc

タイマー

Wm_timer

SetCoalescableTimer