Bitmap aus Resource einer statischen Bibliothek laden?



  • Da hast du natürlich Recht, dass das hier nicht hineingehört. Tut mir Leid. Wäre nett, wenn das ein Moderator verschieben könnte.

    Es funktioniert weder mit GetModuleHandle(NULL) noch mit GetWindowLongPtr(NULL, GWLP_HINSTANCE). In beiden Fällen liefert GetLastError() 1814, also ERROR_RESOURCE_NAME_NOT_FOUND, zurück.

    Noch einmal zum festhalten: Ich möchte innerhalb der statischen Bibliothek eine Bitmap aus der Resource des selben Projekts laden. Geht das überhaupt?



  • Achja, GetLastError() rufe ich nach LoadBitmap(...), nicht direkt nach GetModuleHandle(NULL) / GetWindowLongPtr(...) auf.

    Nach GetModuleHandle(NULL) liefert GetLastError() noch 0 zurück.



  • Noobotto schrieb:

    Noch einmal zum festhalten: Ich möchte innerhalb der statischen Bibliothek eine Bitmap aus der Resource des selben Projekts laden. Geht das überhaupt?

    Klar, geht. Aus einer statischen Bibliothek heraus bekommst du mit GetModuleHandle(NULL) die HINSTANCE des "einbindenden" Prozesses.

    Zeig doch mal die Deklaration der Resource aus der Resourcen-Datei und deinen LoadImage- (bzw LoadBitmap-) Aufruf. Vielleicht hat die Fehlermeldung ja recht und du gibst tatsächlich 'nen falschen Namen an 🙂



  • .rc Datei:

    //...
    IDB_BITMAP_TEST             BITMAP                  "Test.bmp"
    //...
    

    .hpp Datei:

    //...
    #define IDB_BITMAP_TEST 123
    //...
    

    .cpp Datei:

    //...
    HBITMAP hBitmapTest = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_BITMAP_TEST));
    //...
    

    😞



  • Badestrand_ schrieb:

    Aus einer statischen Bibliothek heraus bekommst du mit GetModuleHandle(NULL) die HINSTANCE des "einbindenden" Prozesses.

    Hört sich so an, als müsste ich die Bitmap dem einbindenden Prozesses (Projekts) hinzufügen... das möchte ich ja gerade nicht. Ich möchte die dem Projekt der statischen Bibliothek selbst hinzufügen 😞



  • bump 😞



  • Dieser Thread wurde von Moderator/in evilissimo aus dem Forum C++ in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Ich hab's gerade einmal ausprobiert, es scheint tatsächlich nicht zu funktionieren (VC++ 2008) 😕 Das ist mir ein Rätsel, die Ressource landet durch das einbinden der Library nicht in der Exe-Datei.



  • Badestrand_ schrieb:

    Ich hab's gerade einmal ausprobiert, es scheint tatsächlich nicht zu funktionieren (VC++ 2008) 😕 Das ist mir ein Rätsel, die Ressource landet durch das einbinden der Library nicht in der Exe-Datei.

    Eventuell wird sie durch die Resource Sektion der exe "überschrieben".


  • Mod

    Statische Libraries haben keine Ressource Sektion wie eine PE-Datei.
    Eine LIB ist nur eine Datenbank für Object Dateien. Der Ressourcen-Compiler bedient LIB Dateien gar nicht.

    Du kannst die Bitmap evtl. einfach als binären String in einer Source ablegen und aus der dem Code laden.



  • Das Thema hatten wir vor wenigen Tagen schon einmal. Der gesuchte Weg geht nach Charles Petzold so:
    1. Bitmap als Resource in rc-Datei ablegen
    2. DLL mit dieser Resource machen
    3. DLL in EXE laden
    4. Bitmap mit MAKEINTRESOURCE holen
    Vielleicht ist es das, was du suchst?


Anmelden zum Antworten