Win32 API resourcen und .lib

elfvyn

Mitglied
Ich habs zwar schonmal in einm früheren Thread angesprochen.. aber es hat sich eine ganz andere Problematik heraus gestellt (siehe http://www.tutorials.de/tutorials211659.html)

Also das Problem:
ich erzeuge eine statische .lib in der ich mit win32 api ein paar fenster gestalte. Diese haben ebenfalls menüleisten und icons die ich über ein resourcenfile einbinde.
Bsp.:
Code:
void RegWindow()
{
	WNDCLASSEX WndClsEx;

	WndClsEx.cbSize		= sizeof(WNDCLASSEX);
	WndClsEx.style		= CS_HREDRAW | CS_VREDRAW;
	WndClsEx.lpfnWndProc	= WndProc;
	WndClsEx.cbClsExtra	= 0;
	WndClsEx.cbWndExtra	= 0;
	WndClsEx.hInstance		= hInstance;
	WndClsEx.hIcon		= LoadIcon( GetModuleHandle(NULL),
                                  MAKEINTRESOURCE(IDI_ICON1));
	WndClsEx.hCursor		= LoadCursor(NULL, IDC_ARROW);							        //Cursor Type
	WndClsEx.hbrBackground	= (HBRUSH)GetStockObject(WHITE_BRUSH);			        //Background color
	WndClsEx.lpszMenuName	= NULL;													                    //Typ of Menu
	WndClsEx.lpszClassName	= XWindowClassName;									            //ClassName(see Winmain.cpp Global Variables)
	WndClsEx.hIconSm		= (HICON)LoadImage(GetModuleHandle(NULL),
                                         MAKEINTRESOURCE(IDI_ICON2),
                                         IMAGE_ICON, 16, 16, 0);

	RegisterClassEx(&WndClsEx);
}

Jetzt habe ich eine win32 konsolenanwendung die die lib eingehängt bekommt!
Nur leider gehen nun die Icons nicht mehr... Dachte die ganze Zeit es wäre ein Code-Problem. Aber es liegt scheinbar an der lib. Denn z.B. das LoadIcon() funktioniert dann nicht mehr.
Hier mal der Auszug aus der hilfe:
The LoadIcon function loads the specified icon resource from the executable (.EXE) file associated with an application instance

Aber wie kann ich die Resourcen sonst in der .lib einbinden? In die Konsolenanwendung dürfen sie nicht?
thx schonmal im vorraus
 
moin


Benutz doch an entsprechender Stelle "GetLastError" und lass dir den Fehlercode angeben.


mfg
umbrasaxum
 
Ja hab ich schon.... = 1812
1812 The specified image file did not contain a resource section. ERROR_RESOURCE_DATA_NOT_FOUND

Wenn ich die Resourcen nun in die Konsolenanwendung reinschiebe dann funktioniert es... aber wie schon erwähnt müsse die in die .lib rein
 
Hmm, ich vermute, dass das HINSTANCE Handle, das du mit GetModuleHandle( NULL ) holst, evtl. nicht dasselbe ist, wie bei der EXE-Datei selbst.
Versuch mal, der LIB zur Initialisierung dein HINSTANCE-Handle zu übergeben, und dieses für LoadIcon usw. zu verwenden.
 
@Endurion...? Was soll ich machen :-) Hab ich nicht ganz verstanden

Hab aber mal nebenbei noch ein bischen ausprobiert und festgestellt das wenn ich das Icon in Laufzeit erzeuge.. also mit CreateIcon() dann gehts... Da muss ich aber riesige Bitmasken angeben und ich habe mal nur ein Beispiel benutzt für 1bit Farbtiefe!.. Bei 32 Bit bräuchte ich schon ein Tool für die Masken, ein riesen Aufwand...Vielleicht gehts ja in der Richtung weiter.
 
Nur zum Testen: Besorg dir das Programm ResHacker (ein feines Freeware-Tool), und öffne damit deine .EXE. Sind da die Icons usw. drin sichtbar?
 
Nein nichts drin! hab nochmal zum Vergleich ein weiteres mit dem tool geöffnet da gehts!

Also nein.. der Kasten bleibt leer
 
Zurück