タイマーイベント
ウィンドウを持つフォームの環境ではタイマーイベントを利用することができます。
![]() |
|
![]() |
|
タイマーの起動
SetTimer()関数でタイマーをウィンドウハンドルを関連付けるとWM_TIMERメッセージが定期的にウィンドウのメッセージキューに送られます。WM_TIMERメッセージをディスパッチすることで定期的な処理を行うことができます。
関数が成功するとタイマーの識別子が戻ります。
UINT_PTR SetTimer( HWND hWnd, UINT_PTR nIDEvent, UINT uElapse, TIMERPROC lpTimerFunc);
hWnd
WM_TIMERメッセージを送るウィンドウハンドルです。
nIDEvent
タイマーの識別子です。複数のタイマーを起動するとき、異なる値を指定します。
uElapse
メッセージが送信されるインターバルです。単位はmSecです。
lpTimerFunc
WndProc()関数でWM_TIMERメッセージをディスパッチすることでタイマー処理を行うことができます。このときlpTimerFuncパラメータはNULLにします。
LRESULT FAR PASCAL WndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_TIMER: // TODO: break; } return DefWindowProc(hWnd, message, wParam, lParam); }
lpTimerFuncを指定すると、デフォルトのウィンドウプロシージャDefWindowProc()関数がWM_TIMERメッセージを処理するとき指定されたコールバック関数を呼び出します。
コールバック関数
lpTimerFuncで用いるコールバック関数を示します。
VOID CALLBACK TimerProc( HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime)
hWnd
タイマーに関連付けられているウィンドウハンドルです。
uMsg
WM_TIMERメッセージです。
idEvent
SetTimer()関数が戻したタイマーの識別子です。
dwTime
システム時刻です。これはシステムが起動してからの経過時間で、timeGetTime()関数によって得られる値と同じです。
![]() |
|
タイマーの停止
KillTimer()関数でタイマーを停止します。
BOOL KillTimer( HWND hWnd, UINT_PTR uIDEvent)
hWnd
タイマーに関連付けられているウィンドウハンドルです。SetTimer()関数で指定したウィンドウハンドルと同じものでなければなりません。
uIDEvent
タイマーの識別子です。SetTimer()関数が戻した値を指定します。