MFCで時間を扱うための基本的なメッセージ。
プログラムの10年以上やってるけど、今まで必要なかった。
必要性を感じて調べたら、けっこうおもしれぇ。
データ変換に要している時間を、ダイアログボックス内に1秒刻みで表示する、
なんていう必要性があったんだけど、以外に簡単にそのやり方がわかった。
CWnd::OnTimer( ) をオーバーライドして、SetTimer( )をコールしておけば、
一定時間ごとに、OnTimerが呼び出される。
OnInitDialog( ) で最初の時間を取得して、SetTimer( )を呼ぶ。
clock_t m_time = clock();
SetTimer( 1, 1000, NULL );
OnTimer( ) の中で、現在の時間を取得して、最初の時間との差分を求めて、
分と秒に換算して、スタティックテキストを更新するようにしておけば、完成。
clock_t now = clock();
int sec = (now – m_time) / 1000;
int min = sec / 60;
sec = sec % 60;
CString str;
str.Format( “%02d:%02d”, min, sec );
GetDlgItem(IDC_STATIC_TIME)->SetWindowText( str );
最大1時間までの所要時間が表示できた。
で、用がなくなったら、KillTimer( ) を呼べばよいらしい。
と言っても、CWndクラスがいなくなれば、自動的に消えてくれるだろうけど。
一定時間ごとに何かをする、というのはよくあることかもな。
いろいろと試してみたいところだ。