Resource aus .lib
-
Hi,
ich habe in einer .lib Datei eine von TWinControl abgeleitete Komponente, die ihrerseits wieder GUI Elemente enthält. Eines dieser Elemente ist ein TBitBtn, den ich mit mit einer Bitmap versehen möchte. Da es zu der Vaterkomponente kein .dfm Formular gibt (weil von TWinControl abgeleitet) kann ich die Bitmap für den TBitBtn nicht per Objektinspektor setzen. Also habe ich eine .rc Datei zum .lib Projekt hinzugefügt und versuche zur Laufzeit mit Graphics::TBitmap::LoadFromResourceName() die Bitmap aus dem Resourcenabschnitt zu erzeugen. Leider bleibt die Anwendung dann mit einem ungültigen Speicherzugriff in der Graphics::TBitmap::LoadFromResourceName() Methode stehen. Das Problem scheint wohl zu sein, dass die Bitmap Resource nicht in die .lib Datei gelinkt wird oder die Hauptanwendung die Bitmap im Resourcenabschnitt nicht findet. Wie kann man das lösen, dass ich in der .lib eine Resource aus dem Resourceabschnitt der .lib benutze?
-
Hallo
Wie sieht denn der LoadFromRes... -Aufruf bei dir konkret aus? Denn bei einer Resource einer Lib darfst du als Parameter instance nicht 0 angeben, sondern du must GetModuleHandle() aufrufen um aus der Lib heraus das WinAPI-Handle zu bestimmen.
bis bald
akari
-
Hm, eigentlich habe ich ja kein anderes Module Handle, da es ein .lib ist, die statisch gelinkt wird und keine DLL. Ich habe bei der LoadFromResourceName sowohl 0 als auch HInstance übergeben, klappt beides nicht.
Das Tool PeBrowsePro listet die Bitmap allerdings auch nicht im Resourceabschnitt der .exe auf, ich gehe mal davon aus, dass der Linker die Resource nicht in die .lib linkt. Wenn ich einen ungültigen Dateinamen für die Bitmap angeben meckert der Linker zwar, aber trotzdem scheint die Bitmap bei korrektem Dateinamen nicht in der lib zu landen. Spasseshalber habe ich eine 3072x3072 Pixel grosse Bitmap (27MB) in die .rc Datei aufgenommen, um zu sehen, ob die .lib Datei grössr wird, aber das tut sie nicht.