ミニタイマー(7) - アイコンの動的描画

公開:2011-05-02 17:19
更新:2020-02-15 04:36
カテゴリ:windows,その他api,ミニタイマー

昨日アイコンをDirect2Dで書いて表示できるようになったので、今日は動的にアイコンを更新することにした。 1秒ごとにアイコンに残り時間を表示してみている。

20110501.png

アイコンはSetClassLongPtrWで動的に書き換えることができ、成功したら変更前のHICONが戻るのでそれは破棄している。

今日いじったソースコード

これでウィンドウを見なくても残り時間がわかるようになった。

リソースリークが気になりはじめた。ハンドルはすべてunique_ptrとかで管理しているけど、漏れているかもしれない。VCランタイムのデバッグ支援機能を有効にしようかなと思ったけど、これはメモリーリークのみだった。リソースリークしているのを知るのはどうすればよいのだろうか。リソースモニタを見てもよくわからなかった。

アイコンに関してはiconクラスとしてまとめた。基本はビットマップ(HBITMAP)を与えると、そこからアイコンを作成し内部的に保持する。D2D1Bitmapからもアイコンを作成できるようにもした。動的にアイコンを描けるようになったといっても実行していないときのアイコンはビットマップをリソースで持つ必要がある。なのでリソースエディタでアイコンを作ったりとかしたいけれどVC2010 Expressはリソースエディタを持っていないのでフリーのエディタをさがすことにする。アイコンだけなのでリソーススクリプトを書いてもいいのだけれどよく知らない。。

このクラスではじめてrvalue参照を使ってみた。うまく使えば一時オブジェクトやリソースのコピーコストが削減される。まだよくわかっていないけど。

続いてタスクバーのサムネイルボタンを実装したいと思っているが、その前にHiloドキュメントをちゃんと読むことにする。