プラットフォーム SDK
SetTimer
指定されたタイムアウト値を持つ 1 個のタイマを作成します。
UINT_PTR SetTimer(
HWND hWnd, // ウィンドウのハンドル
UINT_PTR nIDEvent, // タイマの識別子
UINT uElapse, // タイムアウト値
TIMERPROC lpTimerFunc // タイマのプロシージャ
);
パラメータ
- hWnd
- タイマに関連付けるべきウィンドウのハンドルを指定します。このウィンドウは、呼び出し側のスレッドが所有しているものでなければなりません。NULL を指定すると、どのウィンドウにも関連付けられていないタイマが作成され、nIDEvent パラメータは無視されます。
- nIDEvent
- タイマの識別子を指定します。hWnd パラメータで NULL を指定した場合、nIDEvent パラメータは無視されます。
hWnd パラメータで NULL 以外の値を指定し、hWnd パラメータで指定したウィンドウに、nIDEvent と同じ値のタイマが既に割り当てられている場合、新しいタイマは既存のタイマを置き換えます。SetTimer 関数がタイマを置き換えた場合、そのタイマはリセットされます。したがって、現在のタイムアウト時間が経過すると 1 つのメッセージが送信されますが、それまでのタイムアウト時間は無視されます。
- uElapse
- タイムアウト値を、ミリ秒(ms)単位で指定します。
- lpTimerFunc
- uElapse パラメータで指定したタイムアウト時間が経過した時点で呼び出される、1 個の関数へのポインタを指定します。このコールバック関数の詳細については、TimerProc 関数の説明を参照してください。
NULL を指定すると、システムは 1 個の メッセージをアプリケーションキューにポストします。このとき、メッセージ内の 構造体の hwnd メンバに、この関数の hWnd パラメータで指定したハンドルが格納されます。
戻り値
関数が成功すると、新しいタイマの識別子を表す整数が返ります。アプリケーションはタイマを破棄する目的で、KillTimer 関数に、この値、または存在する場合は文字列による識別子を渡せます。
関数がタイマの作成に失敗すると、0 が返ります。拡張エラー情報を取得するには、 関数を使います。
解説
WM_TIMER メッセージを処理するには、ウィンドウプロシージャ内に WM_TIMER メッセージを処理するための case 文(処理ルーチン)を記述するか、タイマを作成する際に TimerProc コールバック関数を指定します。TimerProc コールバック関数を指定すると、既定のウィンドウプロシージャは WM_TIMER メッセージを処理する際にそのコールバック関数を呼び出します。したがって、WM_TIMER メッセージを処理する代わりに TimerProc 関数を使う場合も、呼び出し側スレッド内でメッセージをディスパッチ(転送)する必要があります。
WM_TIMER メッセージの wParam パラメータには、この関数の nIDEvent パラメータで指定した値が格納されます。
タイマの識別子である nIDEvent は、関連付けられているウィンドウに特有のものです。ウィンドウが異なっていれば、各ウィンドウに関連付けられているタイマに同じ識別子を割り当ててもかまいません。それらのタイマは個別のものを意味します。
対応情報
Windows NT/2000:Windows NT 3.1 以降
Windows 95/98:Windows 95 以降
ヘッダー:Winuser.h 内で宣言、Windows.h をインクルード
インポートライブラリ:User32.lib を使用
参照
KillTimer, , TimerProc,