0

MUI の目的でリソース DLL に埋め込まれたアイコン、ビットマップ、および文字列を含むプロジェクトがあります。これらはすべて Windows 7 で問題なく動作しますが、XP で動作するのは文字列とビットマップだけです。実際のツールセットとして Visual Studio 2010 (v100) を使用して、VS2012 を使用して Windows 7 でアプリを構築しています。

XP では MUI がネイティブにサポートされていないため、 MSDNのこの記事の手順 5.1c と 5.2 に基づいて、適切なリソース DLL へのハンドルをプログラムで取得します。

XP のリソースからアイコンの LoadImage を試した後の GetLastError の結果は 1813、つまり ERROR_RESOURCE_TYPE_NOT_FOUND です。同じリソース ハンドルでビットマップまたは LoadString の LoadImage を呼び出すと、正しく機能し、実際に、文字列とビットマップが適切な場所に表示されます。

アプリケーションの DLL を開いてショートカットのアイコンを設定しようとすると、Windows 7 では問題ありませんが、Windows XP ではファイルにアイコンが含まれていないと報告されます。XP は、ico ファイル自体をコピーしても問題なくロードできるので、リソース コンパイラがなんらかの方法でそれらを壊さない限り、形式が悪いとは思いません。リソース エディタでアイコンを見ると、16x16 の 32 ビット BMP ファイルとして表示されます。

4

2 に答える 2

1

MUI ソリューションを作成すると、リソースは言語に依存しない DLL (通常はアイコン、マニフェストなどを含む) と言語固有の DLL (通常は文字列、ダイアログなどを含む) に分割されます。

MSDNから: 「Windows Vista 以前のリソース読み込み関数 (LoadString、LoadIcon、LoadBitmap、FormatMessage など) は、MUI に対応していません。」

文字列とアイコンが同じ DLL にない可能性があり、XP はそれらを探しません。リンクした記事では、Windows XP で MUI を機能させる方法について説明しています。

于 2012-06-20T13:19:34.607 に答える
1

私の問題はVS2012が原因でした。VS2010 ツールを使用して VS2010 でリソース DLL をビルドすることと、VS2010 ツールを使用して VS2012 でリソース DLL をビルドすることの違いはわかりませんが、1 つだけあります。

于 2012-06-20T22:01:15.040 に答える