VBレスキュー(花ちゃん)
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ各掲示板

リンク元へ戻ります。 コントロール共通関係のメニュー
1.主要プロパティについて
2.オブジェクトの表示/非表示状態を切り替える
3.コントロールをプログラム実行時に作成する
4.現在アクティブなコントロール及び直前アクティブだったコントロールを取得
5.フォーム上のすべてのコントロールのプロパティ値を一度に設定
6.コントロールを WindowsXP スタイルで表示する
7.円形・多角形のフォーム・コントロール・ピクチャーを作成する
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.


6.コントロールを WindowsXP スタイルで表示する
1.コントロールを WindowsXP スタイルで表示する
2. 
3. 
4. 
5. 
6. 

 下記プログラムコードに関する補足・注意事項 
動作確認:Windows Vista・Windows 7 (32bit) / VB6.0(SP6)
Option :[Option Explicit]
参照設定:追加なし
使用 API:
なし
その他 :
    :
このページのトップへ移動します。 1.コントロールを WindowsXP スタイルで表示する
   実行前                 実行後
  manifest1.gif   manifest2.gif

上図を見て頂ければ、説明は不要かと思います。

コード上では、特に何もする必要はありません。
マニフェストファイル と呼ばれる 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>

4.上記のtest の部分だけは EXEファイル名に変更して下さい。(動作確認用に)
5.作成したマニフェストファイルのファイル名は、test.exe.manifest とし、EXEファイルと同じフォルダーに保存して下さい。(test.exe の部分は拡張子を含めたEXEファイル名を使用します)

詳しいマニフェストファイルの書き方は、下記アドレス等を参考にして下さい。
http://hanatyan.sakura.ne.jp/logbbs/wforum.cgi?mode=allread&no=705
下記の第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


このページのトップへ移動します。 2. 


このページのトップへ移動します。 3.


このページのトップへ移動します。 4.


このページのトップへ移動します。 5.


このページのトップへ移動します。 6.


このページのトップへ移動します。 検索キーワード及びサンプルコードの別名(機能名)
WindowsXP スタイルのコントロールを表示する WindowsXP スタイルのコントロールを作成する




このページのトップへ移動します。