ミニタイマー(2)

公開:2011-04-26 21:33
更新:2020-02-15 04:36
カテゴリ:windows,ミニタイマー,c++

ミニタイマーのとりあえず版を作ってみた。

ソースコード

15分カウントダウンしMessageBeep、30秒間カウントダウンしMessageBeep、を延々繰り返す。タスクバーアイコンのプログレスも残り時間に合わせて表示するようにしているので、ウィンドウが隠れていても残り時間がどれくらいなのかわかるようになっている。15分の時には緑、30秒間の時は黄色で表示する。

ウィンドウのカウントダウン表示「残り何分何秒」はDirect2D+DirectWriteで描いている。実はDirect2Dの方がGDIより簡単に描けるのでそうしている。

後はDWM APIを使って全体を半透明のウィンドウにしてみようかなと思った。この記事を参考に実装してみたが、Direct2D描画の部分が半透明にならない。画面クリア(ID2D1HwndRenderTarget::Clear)の色を透明にしてもできなかった。GDI描画ならできることは以前確認ずみだなのだが。Direct3Dなら出来る記事を見つけた。この記事でのソースコードを見たらWM_ERASEBKGNDメッセージで背景を塗りつぶしていた。真似しようかなと思ったけど、WM_ERASEBKGNDメッセージ自体が飛んで来ない。確かWindows 7だとWM_ERASEBKGNDメッセージが飛んでこないとどこかで見たような気がするので、Windows7ではこの手は使えないのかな。。