好きな「お肉」は?

VC6.0で作成したダイアログベースのアプリケーションを、VisualStudiio2008のプロジェクトに変換したのですが、ダイアログのスタイルが古いWindowsスタイルのままになってしまいます。
リソースエディタでは新しいスタイルで表示されます。
実行すると古いスタイルで表示されます。

原因をご存じの方、ご教授ください。
よろしくお願いします。

A 回答 (3件)

OSが32bitとかってに仮定して・・・


下の内容をコピーしてメモ帳に貼り付けて、XXX.manifest という名前で保存します。
(XXXは好みに合わせて変更してください)

ここから

<?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="Microsoft.Windows"
type="win32"
/>
<description>TimeSeries</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>

ここまで
次にVS2008でソリューション(プロジェクト)を開き、プロジェクトのプロパティを表示します。
構成プロパティ > マニフェストツール > 入力と出力 の [追加のマニフェスト ファイル]
のところに先ほど作成したXXX.manifestを指定してリビルドします。

で、どうでしょう。

64bit OSの場合は上記内容のX86をX64なりIA64なりに変えてあげてください。
    • good
    • 0

Windows XP 以降で追加された、コモン コントロール Ver.6.x を使うように、アプリケーション マニフェストで明示的に指示する必要があります。



[1] stdafx.h に下記のプリプロセッサ ディレクティブを記述。
[2] メニュー「プロジェクト」→「{プロジェクト名}のプロパティ」→「構成プロパティ」→「全般」→「文字セット」で「Unicode 文字セットを使用する」を選択。
[3] リビルド。

VS 2008 の MFC App ウィザードを使うと、下記のディレクティブは自動的に記述されます。
「マルチバイト文字セットを使用する」の設定でビジュアル スタイルにすることもできなくはないですが(_UNICODE 定義の有無にかかわらずディレクティブを有効にする、あるいはマニフェスト ファイルをリソースとして埋め込む)、Windows XP 以降は内部処理が Unicode(UTF-16)になっている関係上、マルチバイト文字セット設定でビジュアル スタイルを適用すると一部の機能が使えなかったり、不具合が出たりすることがあります。


#ifdef _UNICODE
#if defined _M_IX86
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
#elif defined _M_IA64
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='ia64' publicKeyToken='6595b64144ccf1df' language='*'\"")
#elif defined _M_X64
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"")
#else
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
#endif
#endif
    • good
    • 0

デバッグビルドとリリースビルドの構成が違う くらいしか思いつきませんねー

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報