コントロールをWindowsXPスタイルで表示 |
コントロールを WindowsXP スタイルで表示する (414) | |
実行前 実行後 上図を見て頂ければ、説明は不要かと思います。 |
|
コード上では、特に何もする必要はありません。 マニフェストファイル と呼ばれる XML 形式で書かれた関連する DLL 等の情報を記述するファイルをメモ帳などを使って作成し、プログラムファイルと同じフォルダーに入れておくだけでOKです。 1.上図のように適当に試したいコントロールをフォームに貼り付けて下さい。 2.EXE ファイル(ここでは仮に、 Test.exe とします)を作成して下さい。 3.メモ帳等を使って下記のような、マニフェストファイルを作成します。 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="CompanyName.ProductName.test" type="win32" /> <description>Description</description> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="X86" publicKeyToken="6595b64144ccf1df" language="*" /> </dependentAssembly> </dependency> </assembly> 5.作成したマニフェストファイルのファイル名は、test.exe.manifest とし、EXEファイルと同じフォルダーに保存して下さい。(test.exe の部分は拡張子を含めたEXEファイル名を使用します) 詳しいマニフェストファイルの書き方は、下記アドレス等を参考にして下さい。 http://hanatyan.sakura.ne.jp/logbbs/wforum.cgi?mode=allread&no=705 http://www.h3.dion.ne.jp/~hanagex/dev/contents/xp/manifest.html 下記の第1回〜第3回 http://www.microsoft.com/japan/msdn/thisweek/vbxp/vbxp1.asp http://www.microsoft.com/japan/msdn/windows/windowsxp/xptheming.asp 又、マニフェストファイルを書くのがめんどうと言う方は下記のようなフリーソフトもあります。 [マニフェスト自動作成君] totonica(ととにか) さん 作 6.以上で完成です。EXEファイルをダブルクリックして起動して見て下さい。コントロールが、XPスタイルになっていたら OK です。(但し、コントロールによっては有効にならないものもあります。) 7.XPスタイルで表示される事が確認できたら上記リンクに書いてあるように、マニフェストファイルを書き換えるなりをして試して下さい。 |
|
注意事項として、マニフェストファイル使用による弊害もあるようです。 尚、すべてのコントロールがWindowsXPスタイルになる訳ではありません。Microsoft Windows Common Controls 6.0 (SP6) のスライダー (Slider) コントロールでは、XPスタイルで表示されず、 Microsoft Windows Common Controls 5.0 (SP2) のスライダー (Slider) コントロールでは上記の図のようにうまくWindowsXPスタイルで表示されます。 (5.0 と 6.0 が同一環境に入っている場合問題が発生する事があるようです) 又、下記のような情報を Starfish さんから頂いております。 コモンコントロールですが、VB5.0のコントロールを使うほかにAPIを使うのもありですよね。 PAPA'n VB (ぱぱんぶぃびぃ)さんのところに、APIのサンプルがあります。 http://www.mitene.or.jp/~sugisita/vb6_cmctl.html 実は、掲示板の質問でスライダー (Slider) コントロールだけを、しかも 6.0 の方を試していたので、色々設定を変えてみたり、WEBを検索して調べて見たりとかなり苦戦しました。 理由は、[5.0はcomctl32.dllが提供する(ウィンドウである)コントロールをOCX化したものであるのに対して、6.0のは完全にcomctl32.dllから独立していて自力でウィンドウを作成するOCXになっています。 よって、6.0ではマニフェストが介在する余地がありません。] と K.J.K. さん 05/04-16:53 No.3105 の投稿で教えて頂きました。 当然の事ながらEXEファイルの実行環境は WindowsXP 上でないと実現できません。 余談ですが、VB.NET ではマニフェストファイル使用せずとも実現できるようです。 http://dobon.net/vb/dotnet/control/xpstyle.html http://www.microsoft.com/japan/msdn/thisweek/vbxp/vbxp3.asp http://zoosir.hp.infoseek.co.jp/tips/control/control01.htm |
2005/05/04