サイトアイコン CAD日記

WM_TIMER

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クラスがいなくなれば、自動的に消えてくれるだろうけど。

一定時間ごとに何かをする、というのはよくあることかもな。

いろいろと試してみたいところだ。

モバイルバージョンを終了