Win32アプリにXPスタイルを適用する方法

.NET Frameworkなどを意図しない旧来の作り方のWinアプリだと、そのまま実行してもXPスタイルのGUIになりません。
ttPage-Rを使っていて、ふとこのXPスタイルにするにはどうすれば?と思ったので、ちょっと調べてみたら意外と簡単な方法でした。
てことでメモ書き。


最初はCreateWindow()で指定する特別なスタイルとかあるのかな?と思ってたら、manifestファイルを用意すれば良いらしい。
(ただし、適用対象はいわゆるコモンコトロールな部品のみ)
WindowsがXPになって、このmanifestという良く分からんファイルを目にするようになりましたが、こういう使い方するものだったのね。
(他にも色々な属性を指定できるもののようだけど、まぁその辺は必要になったら調べよう ^^;)
で、具体的にはアプリの実行ファイル名に”.manifest”を追加したファイル名で、下記のような内容のテキストファイルを作成する。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="x86"
publicKeyToken="6595b64144ccf1df"
language="*" />
</dependentAssembly>
</dependency>
</assembly>

これを実行ファイルと同じフォルダに置いておくと、そんだけでXPスタイルなGUIになりました。
あと、そうやって別ファイルを用意しなくとも、実行ファイルにあらかじめリソースとして追加しておくと、デフォルトでXPスタイル対応なアプリになってくれるようだ。
これも簡単で、上記の内容をカスタムリソースとしてリソースに追加しておくだけ。
リソースのtypeとIDは、type=24、ID=1としておきます。

コメント

コメントする