閑古鳥

オールドプログラマの日記。プログラミングとか病気(透析)の話とか。

XP テーマを操作

Windows XP でスタイルを XP Style にした時に GetSysColor API でタイトルバーの色が取れなくて *1 色々調べていたのですが、 XP Style にすると色々なところが画像になるんですね。 GetSysColor で得られる色は合っているのだけれど、その色で描かずに画像の方を描いてしまうので微妙に違いが出てくるという事らしい。全然知りませんでした。

Windows XP からはそのテーマを操作したり、現在設定されているテーマを使って描画を行ったりする API が用意されているらしい。

あと Web の MSDN2 では検索しても出てきませんでしたが、「Visual Styles Reference」で検索すると上記ページで紹介されているような API のリファレンスが出てきます。手元の MSDN Library 2005 には掲載されていました。

試しになんか描いてみましたが、なるほど現在設定しているスタイルと同じイメージがそのまんま出てきますね。

自分は家でも職場でもクラシックスタイルなので気にはならないのですが、一部のボタンとかが XP Style の時もクラシックっぽいものが出てしまうので、そういう時はテーマから画像引っ張ってきてそっちを使うようにしたほうが整合性取れて良いのかもしれないなあ。色々とデザインの幅が広がりそうだ。

*1:実際には取れるのだけど実際のそれと合っていない