TResourceStream funktioniert nicht



  • Hi,

    habe eine rc-Datei mit folgendem Inhalt:

    SEITE_O BITMAP "E:\\FindOut\\Pics\\Wege\\Seite_o.bmp"
    SEITE_U BITMAP "E:\\FindOut\\Pics\\Wege\\Seite_u.bmp"
    KUGEL RCDATA "E:\\FindOut\\Pics\\Kugel\\kugel_1.jpg"
    

    Diese wird einwandfrei compiliert und eine res-Datei erzeugt. Eine Prüfung mit einem Resource Builder hat ergeben, dass alle Resourcen auch enthalten sind. Die Bitmaps werden auch mit TBitmap->LoadFromResource einwandfrei geladen (mit LoadFromResourceName((int)hinstGrafik,"SEITE_O");. Das JPG-Bild möchte ich mit TResourceStream laden:

    TResourceStream *hrc=new TResourceStream((int)hinstGrafik,"KUGEL",RT_RCDATA);
    

    Leider kommt immer der Fehler "Resource Kugel wurde nicht gefunden".
    hinstGrafik ist ordnungsgemäß versorgt. Wieso findet er die Resource nicht?

    Prosit Neujahr



  • Probier mal

    TResourceStream *hrc = new TResourceStream((int)hinstGrafik, "KUGEL", "RCDATA");
    


  • Nein, geht leider auch nicht, nur wenn ich eine rh-Datei mit

    #define KUGEL 1000
    

    in die Resource und die cpp-Datei einbinde und dann aufrufe mit

    TResourceStream *hrc=new TResourceStream((int)hinstGrafik,KUGEL,RT_RCDATA);
    

    funktioniert es. Auch die Original-Windows Routine FindResource funktioniert nur unter diesen Umständen.

    Auch die Definition eines eigenen Typen

    KUGEL JPGDATA "E:\\FindOut\\Pics\\Kugel\\kugel_1.jpg"
    

    bringt nichts. Wollte eigentlich nicht noch eine rh-Datei pflegen.

    Das sollte doch auch ohne gehen?



  • TResourceStream() übernimmt drei Parameter, erstens die Instanz, in welcher die Resource ist, zweitens den Namen der Resource und drittens den Typ der Resource. Wenn dies bei dir nicht funktioniert, liegt der Fehler woanders.

    Wenn ich eine Resource einbinde (als Beispiel eine PNG-Graphik)
    MyImage PNG "C:/MyImage.png
    , dann kann ich es erfolgreich in meiner Anwendung mit
    TResourceStream(0, "MyImage", "PNG");
    laden.



  • Mit

    [cpp]TResourceStream(0, "MyImage", "PNG"); [/cpp]

    geht es seltsamerweise auch, jedoch liegen die Resourcen in einer extra DLL. Wie gesagt,

    - die Instanz ist gültig (Bitmaps werden geladen)
    - die DLL wird korrekt geladen.

    ?



  • Ist die DLL statisch oder dynamisch gelinkt?
    Falls ersteres, ist dieses Verhalten (imho) nicht merkwürdig.



  • dynamisch;

    Tja, dann muss ich wohl mit der rh-Datei leben


Anmelden zum Antworten