2017-05-19 16 views
0

最新のWin10 Creatorsアップデートで画面のレンダリングに問題があるレガシーウィンドウアプリケーションがあります。私は.NETアプリケーションがresolveApplication.EnableVisualStylesを呼び出すことによって問題を引き起こすことができます参照してください。しかし、私のアプリは、(デルファイ6で)私は同じことをするために使用することができるネイティブシステムコールがあることを期待している前のドットネット書かれています。Application.EnableVisualStylesに相当するネイティブコールとは何ですか?

+0

いつでも[ソースを参照してください](https://referencesource.microsoft.com/#System.Windows.Forms/winforms/Managed/System/WinForms/Application.cs,2788587b444f7889)。 –

+0

それほど簡単ではありません。あなたが近代的な十分なデルファイを持っているなら、それは十分簡単です。しかし、Delphi 6以前では、サードパーティコンポーネントが必要です。だから、どのバージョンのDelphiを使用しますか? –

+0

Delphi 6. – Aheho

答えて

2

Delphi 6では、ビジュアルスタイルを直接使用することはできません。サードパーティのライブラリ、Mike LischkeのWindows XP Theme Managerを使用する必要があります。実際、このライブラリはDelphi 7に含まれていた組み込みのサポートの基礎を形成しています。ソースコードを読むことで容易に確認できます。あなたは、次の手順を実行する必要があり、あなたのDelphi 6のプログラムでこれを使用するためには

  1. は、プロジェクト内のXPのテーママネージャライブラリを含めます。
  2. アプリケーションマニフェストリソースを、comctl32 v6を指定する実行可能ファイルにリンクします。これを行う方法を説明するオンラインリソースはたくさんありますが、ここではこれを繰り返さないでください。

プログラムが現在アプリケーションマニフェストをリンクしていない場合は、そのときに他の動作が変更されることがあります。マニフェストがなければ、プログラムはUACの下で仮想化されます。マニフェストを使用すると、仮想化は無効になります。現在、2005年にVistaで仮想化が導入され、開発者がUACで導入された変更に適応するのを支援する松葉杖として機能しました。それでもあなたのプログラムをUACに適合させていないのであれば、おそらくあなたがそうすることに時間がかかるでしょう!

+0

「次のステップを実行する必要があります」 - >「次のステップの1つ」 –

+0

@sertac私はあなたが両方とも必要だと思う –

+0

私は恐らくD7の "xpman"ユニットと混同していたでしょうが、それは "windowsxp.res"を含むことだけです。 –

関連する問題