c ++ - FindResource fejler

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har et stykke kode som dette


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


Det virker fint,

Men jeg kan ikke få det til at fungere nogen af ​​varianterne nedenfor


  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 returnerer 0x00000716 Det angivne ressourcenavn kan ikke findes i billedfilen.

Hvad er den rigtige strengformat/måde til søgning med en streng?


Rediger : .rc vil blive genereret og vil indeholde .html og .png-filer. Jeg vil gerne kunne lokalisere og indlæse de pågældende filer uden at genkompilere exe. Jeg skal kunne identificere en eller anden måde i .html hvad .png bruger, i exe vil jeg modtage den pågældende sti/id end FindResource og loading. Kan dette gøres?

Bedste reference


Den første post i en RCDATA linje er navnet (eller ID). Den sidste post er simpelthen 'hvad skal ressource kompilatoren bruge til at oprette denne post' - navnet er ikke gemt i den eksekverbare.


FOO  RCDATA  "images\list-back.png"

...

::FindResource(module, L"FOO", RT\_RCDATA);

Andre referencer 1


Derudover kan du gemme ressourcen med et streng-id, i stedet for et numerisk ID, sådan:


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


Så kan du faktisk gøre:


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


Dette er mindre effektivt end Erik's løsning, men kan være mere overskuelig, hvis du forsøger at få adgang til en ressource fra et statisk bibliotek, mens ressourcen selv bliver integreret i DLL/EXE på et senere tidspunkt. (Du behøver ikke at kende det numeriske ID, så er du enig i det symbolske navn på tværs af dine moduler)