1

次のように Visual Styles マニフェストをプログラムに埋め込むと:

// Embed visual style XML manifest
#pragma comment(linker,                           \
    "\"/manifestdependency:type='Win32'"          \
    "   name='Microsoft.Windows.Common-Controls'" \
    "   version='6.0.0.0'"                        \
    "   processorArchitecture='*'"                \
    "   publicKeyToken='6595b64144ccf1df'"        \
    "   language='*'\""                           \
)

// Link common controls library
#pragma comment(lib, "ComCtl32.lib")

私のプログラムは Windows XP でしか動作しないということですか? または、ビジュアル スタイルがコンピューター上にない場合、オペレーティング システムの既定のスタイルを使用するだけですか? Visual Studio 2008 で開発しているプログラムでビジュアル スタイルを有効にしたので、それを実行できる最も古いバージョンの Windows を知りたいので質問します。WINVERビジュアル スタイルをサポートするバージョンを実行しているかどうかを確認する必要がありますか? その場合、プリプロセッサでどのバージョン番号を確認する必要がありますか。私が知りたいもう 1 つのことは、ビジュアル スタイルなしで、プログラムを実行できる最も低いバージョンは何ですか?

4

2 に答える 2

6

私のプログラムは Windows XP でしか動作しないということですか? それとも、ビジュアル スタイルがコンピューター上にない場合、オペレーティング システムの既定のスタイルを使用するのでしょうか?

後者は真であり、ドキュメントは正確な動作を定義しています(強調は私のものです):

アプリケーションでビジュアル スタイルを使用する場合は、アプリケーション マニフェストまたはコンパイラ ディレクティブを追加して、ComCtl32.dll バージョン 6が使用可能な場合はそれを使用する必要があることを示す必要があります

同じページの別のセクションでは、下位互換性に関して注意すべき点について説明しています:アプリケーションを以前のバージョンの Windows と互換性を持たせる。ビジュアル スタイルについては、次のように述べています。

ビジュアル スタイル アーキテクチャの多くは、コントロールの外観の変更をサポートしていない以前のバージョンの Windows で製品を引き続き簡単に出荷できるように設計されています。

于 2012-10-04T17:28:00.153 に答える
4

これは問題ではありません。マニフェストは、コモン コントロール DLL のバージョン 6 が必要であることを Windows に伝えるだけです。サイド バイ サイド キャッシュ (c:\windows\winsxs) に格納されているものであり、c:\windows\system32 に格納されている従来のキャッシュではありません。side-by-side キャッシュは DLL Hell 対策であり、異なるバージョンの DLL を同じ名前で格納できます。

マニフェストは以前のバージョンの Windows には影響しません。これらのバージョンはマニフェストについて何も知らなかったので、マニフェストを探してもわかりません。

于 2012-10-04T17:44:28.417 に答える