[MFC]タイマー処理
特定時間経過したらメッセージが投げられ、
それを受け取るメッセージハンドラ。
メッセージは WM_TIMER
WM_TIMERからOnTimer()というメッセージハンドラが
作成されるので、この中にタイマー満了時の処理を
書けばよい。
例えば時計などのとき、リアルタイムに描画を
更新したいときは次のようにすればおk。
void CClockDlg::OnTimer(UINT_PTR nIDEvent)
{
if(nIDEvent == 123) //受け取ったメッセージIDのときのみ描画更新
{
InvalidateRect(NULL);
}
CDialog::OnTimer(nIDEvent);
}
InvalidateRect()関数で自分自身に描画更新のメッセージを投げる。
とっても便利。
第2引数はデフォルトでTRUEだけど、FALSEを与えると背景の更新は行わない。
ダイアログベースのアプリだと、OnPaint()関数に処理が移る。
タイマーを起動させるには、SetTimer()関数を使う。
/*
第1引数:タイマーID
第2引数:タイマー時間(ms)
第3引数:調べてないから不明。基本NULL
*/
SetTimer(123, 500, NULL);
タイマーは起動したら動き続けるので、
動作を完了させるために KillTimer()関数を使う。
/*
第1引数:タイマーID
*/
KillTimer(123);
多分使う機会は結構あるのではないかと思う。