2017-07-26 7 views
2

私は最近、プロジェクトをVS2005からVS2015に移行しました。そうすることで、私のプロジェクトはシステムのルック・アンド・フィールを使用することを拒否し、Windows 98のルック・アンド・フィールを使用します。 2005年に構築されたときは、システムの外観を使用します。2005年から2015年までのVisual Studioのアップグレード、C++ GUIはシステムテーマではなくXPテーマを維持します

ダイアログを説明するファイルは、元のファイルをコピーして貼り付けたものと同じです。プロパティはすべて同じです。

私は周囲を検索しましたが、システムに設定できるFlatStyleプロパティが1つありますが、ダイアログにはこのプロパティがありません。

さらに、私はthisを見て、試してみたが、どれもうまくいかないようだ。

私はこの問題を、2015年に無効にして、アプリケーションがシステムのルックアンドフィールに適応するように設定しなければならないと考えています。

私のアプリケーションを現在のシステムに適応させるにはどうすればよいですか?ここで

ダイアログの例です。

STYLE DS_SETFONT | DS_3DLOOK | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME EXSTYLE WS_EX_ACCEPTFILES | WS_EX_APPWINDOW

+1

あなたは[マニフェストファイルを修正](https://msdn.microsoft.com/en-us含まれていません/library/windows/desktop/bb773175(v=vs.85).aspx)? [MSDNのヒント](https://msdn.microsoft.com/en-us/library/bb773187.aspx)も参照してください。 – Groo

+0

一般的なコントロールには2つの味があります。UTF-16だけなので、新しいコントロールを選択する必要があります。したがって、あなたのプログラムがMBCSならば、彼らは適切に動作しません。プログラムがUnicodeを適切に使用していることを確認し、アプリケーションマニフェストに適切な行を追加する必要があります。 – Mgetz

+0

リンカのプロパティの下でうまくいくと、 'generate file'プロパティが' no'に設定されています。あなたはどちらも正しい方向に私を向けるのを助けました。 –

答えて

4

あなたのアプリは、視覚スタイルを使用できるようにするには、マニフェストファイルを通じて、ComCtl32.dllバージョン6以降を使用することを指定する必要があります。 Windowsにはこのファイルの複数のバージョンが付属しているため、新しいファイルを指定する必要があります。 @Mgetzはコメントで述べたように

も注意してくださいそれは、新しいDLLが正常に動作するので、必ず文字セットは、プロジェクトの一般的なプロパティにUnicodeに設定されていることを確認するためにユニコードが必要です。

自分でファイルを生成することも、ソースコード内のプロジェクトの依存関係やリンカの指示に従ってVisual Studioに自動的に生成させることもできます。

したがって、最も簡単な方法は、リンカーに生成させることです。プロジェクトのプロパティをLinkerに開き、Manifestページを選択し、Generate ManifestYesに設定されていることを確認します。次に、ソースコードに次のディレクティブを配置します。

// broken into several lines for readability, as usual make sure there 
// are no backspaces after trailing backslashes if copy/pasting 
#pragma comment(linker, "\"/manifestdependency:type='win32' \ 
name='Microsoft.Windows.Common-Controls' version='6.0.0.0' \ 
processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"") 

また、手動でマニフェストファイルを生成することもできます。 Enabling Visual Styles記事によると、それは(<dependency>属性が関連するもの)のようになります。

<?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="*" 
     name="CompanyName.ProductName.YourApplication" 
     type="win32" 
    /> 

    <description>Your application description here.</description> 

    <dependency> 
     <dependentAssembly> 
     <assemblyIdentity 
      type="win32" 
      name="Microsoft.Windows.Common-Controls" 
      version="6.0.0.0" 
      processorArchitecture="*" 
      publicKeyToken="6595b64144ccf1df" 
      language="*" 
     /> 
     </dependentAssembly> 
    </dependency> 

</assembly> 
関連する問題