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
タイマーに関連付けるウィンドウへのハンドル。 このウィンドウは、呼び出し元のスレッドによって所有されている必要があります。 hWnd の NULL 値が既存のタイマーの nIDEvent と共に渡された場合、そのタイマーは、既存の NULL 以外の hWnd タイマーと同じ方法で置き換えられます。
[in] nIDEvent
種類: UINT_PTR
0 以外のタイマー識別子。 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 でない場合、戻り値は 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 は、 hWnd が NULL の場合にタイマー 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 で導入) |
関連項目
概念
リファレンス