CAD日記

主にAutoCADのことについて書いているけど、近頃は投資系ネタに注力している。自動売買、仮想通貨、PC関係、プログラミングなど。@caddiary

ソフト開発

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

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

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

-ソフト開発
-

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

クリップボード履歴を一括でまとめて取得したいだろ?

Windows 10 1809の新機能「クリップボード履歴」はそこそこ使えるんだけど、惜しいんだよね。最大25個までのコピーした履歴を取れるところまではよいが、その履歴を一括でまとめて取得できないのだ …

zipcopy Ver1.02リリース

昨日に引き続きリビジョンアップを実施して、Ver1.02とした。 Ver1.02での変更点は以下の通り。 ・7zipを使わずに、DotNetZipの機能で圧縮・解凍を行えるようにした。 ・ファイル削除 …

VisualStudioのアイコンエディタはクソで、Paint.NETが素晴らしいじゃん

アプリケーションエンジニアならicoファイルを自由自在に作れるかっていうとそうでもなくて、今までだましだまし適当に作っていた。Photoshopなんかで画像を作るとこまではいいんだけど、それをVisu …

zipcopy Ver1.04リリース

zipcopyをリビジョンアップして、Ver1.04とした。 Ver1.02からなので2回リビジョンアップしている。詳細は以下の通り。 Ver1.03 2019/9/26 ・ファイル削除時の例外エラー …

AutoCADのクリッピング情報を語る

AutoCADのクリッピング情報は様々あって、代表的なものとしてレイアウトのビューポート枠によってモデルの絵をクリッピングするというのがある。モデルをのぞき込む窓がビーポートであって、そいつにはレンズ …