Resourcen einbinden



  • Hallo,
    ich versuche schon die ganze Zeit Resourcen in mein Programm einzubinden.
    Hab es als einfachstes Beispiel mit einem Icon versucht.

    icon.h:
    #define IDI_MYICON 201

    icon.rc:
    #include "icon.h"
    IDI_MYICON ICON "test.ico"

    iconprog.cpp:
    #include "icon.h"
    ...
    wc.hIcon = LoadIcon(GetModuleHandle(NULL),MAKEINTRESOURCE(IDI_MYICON));
    ...

    Das Programm alleine funktioniert.

    Dann beführe ich folgende Befehle aus:
    bcc32 -tW -c iconprog.cpp
    brcc32 icon.rc
    ilink32 iconprog.obj,,,,,icon.res

    So hab ich's bei Beispielen im Internet gelesen.
    Das ganze funktioniert in sofern auch, dass jetzt im Explorer das Icon vor dem Programm angezeigt wird.

    Aber sobald ich es ausführen will, kommt ein Windowsfehler, "Diese Anwendung wird aufgrund eines ungültigen Vorgangs geschlossen"

    Was mach ich falsch?? Such schon die ganze Zeit, hab aber noch nichts gefunden

    Thomas



  • Versuch mal statt dem Makro MAKEINTRESOURCE(IDI_MYICON) einfach "201" (mit Anführungszeichen).



  • Danke, hat aber leider nicht funktioniert.

    Hat mich aber auf die Idee gebracht, das Icon im Programm gar nicht zu verwenden.
    wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
    Ergebnis: Im Explorer wird nach wie vor das eigene Symbol vor dem Programm angezeigt. Das Programm stürzt immer noch gleich ab.

    Ich denke eher, dass es am compilen oder linken liegt.
    Hab deshalb mal ausprobiert, ob ich es überhaupt ohne Resourcen hinbekomme.

    bcc32 -tW -c iconprog.cpp
    ilink32 -aa iconprog.obj
    Ergebnis: geht nicht!

    bcc32 -tW iconprog.cpp geht aber!

    Vermute, dass ich irgendwo noch was angeben muss oder ne Eigenschaft setzen muss (vielleicht beim Linken) von der ich nicht weiß.

    Thomas



  • der code ändert ja auch nicht das icon im explorer. :o
    und wenn es da abstürzt liegt der fehler wo anders.



  • Hat das Programm funktioniert, bevor du die Resource eingefügt hast? Kannst ja mal den Code posten.
    Mit deinem Compiler kenn ich mich auch net aus, vieleicht kann dir ja jemand aus dem "Andere Compiler"-Forum helfen.

    Ich finds übrigens gut, dass du dir die Mühe machst und die Resourcenscripte von Hand erstellst -> besseres Verständnis der Materie. Damit hab ich auch angefangen, nutze jetzt aber meist den Resourceneditor der IDE, weil er komfortabler ist, besonders bei Dialogen 🙂



  • Was meinst du mit "vor Einfügen der Resourcen"?
    Wie gesagt, wenn ich allein aus der cpp-Datei mit "bcc32 -tW iconprog.cpp" eine exe-Datei mache, funktioniert das Programm.
    ich glaube mittlerweile auch nicht mehr, dass es was mit der Resource zu tun hat, das Icon ist ja immerhin da.
    Ich glaube vielmehr, dass es am compilen und linken liegt, vorallem wegen der Tatsache, dass es nicht funktioniert wenn ich aus der cpp-Datei eine obj-Datei erstelle und dann beim Linken nur diese obj-Datei angebe:
    bcc32 -tW -c iconprog.cpp
    ilink32 -aa iconprog.obj
    Das alleine funktioniert schon nicht, und hier sind noch gar keine Resourcen im Spiel.
    Werds wohl mal bei "andere Compiler" versuchen.

    Thomas



  • Hi,
    liegt wohl definitiv nicht an Resourcen oder WinAPI.

    Hab folgendes Programm test.cpp erstellt:
    #include <iostream>
    using namespace std;
    int main(){
    cout << "Test";
    return 0;
    }

    Wenn ich jetzt hintereinander
    bcc32 -c test.cpp und
    ilink32 test.obj
    ausführe und dann das Programm starte kommt genau derselbe Fehler, dass die Anwendung aufgrund eines ungültigen Vorgangs geschlossen wird

    Thomas


Anmelden zum Antworten