1

私はこのようなコードを持っています

  IDB_PNG1                PNG                     "images\\list-back.png"
  HRSRC hrsrc = FindResource(module, MAKEINTRESOURCE(IDB_PNG1), TEXT("PNG")); 

これは正常に
機能しますが、以下のバリアントのいずれも機能させることはできません

  hrsrc = ::FindResource(module, L"images\\list-back.png", L"PNG");
  hrsrc = ::FindResource(module, L"images\\list-back", L"PNG");
  hrsrc = ::FindResource(module, L"list-back.png", L"PNG");
  hrsrc = ::FindResource(module, L"list-back", L"PNG");

GetlastErrorは0x00000716を返します指定されたリソース名が画像ファイルに見つかりません。
文字列で検索するための正しい文字列形式/方法は何ですか?

編集:.rcが生成され、.htmlおよび.pngファイルが含まれます。exeファイルを再コンパイルせずにそのファイルを見つけてロードできるようにしたい。.htmlで.pngが使用しているものを何らかの方法で識別できる必要があります。exeでは、FindResourceおよびロードよりもそのパス/IDを受け取ります。これはできますか?

4

2 に答える 2

5

RCDATA行の最初のエントリは、名前(またはID)です。最後のエントリは、単に「リソースコンパイラがこのエントリを作成するために何を使用する必要があるか」です。名前は実行可能ファイルに保存されません。

FOO  RCDATA  "images\\list-back.png"

...

::FindResource(module, L"FOO", RT_RCDATA);
于 2011-04-27T16:46:13.137 に答える
0

さらに、次のように、数値IDではなく文字列IDを使用してリソースを保存できます。

list-back PNG "images\\list-back.png"

その後、あなたは確かに行うことができます:

hrsrc = ::FindResource(module, L"list-back", L"PNG");

これは、Erikが提供するソリューションよりも効率的ではありませんが、静的ライブラリなどのリソースにアクセスしようとしている場合は管理しやすくなりますが、リソース自体は後の段階でDLL/EXEに埋め込まれます。(数値IDを知っている必要はありません。モジュール全体で、記号名に同意するだけです)

于 2015-08-30T13:23:02.330 に答える