Frage: -dlls und Icons, bzw. .bmps
-
Guck mal die Windows Symbole....
die finde ich nur, wenn ich zB mit nem Free Ressource Editor z.B. die Shell32.dll öffne.
Da stehen dann die Icons und deren Id's.
Wenn diese DLL diese Icons aus ner Ressource bezieht, die wiederum auf ne .ico oder ne .bmp zurückgreift........... warum finde ich die durch die Suche dann nicht?
-
Die Icons werden einfach in die DLL oder exe "mitgelinkt" Du legst ja in deiner IDE die Resourcen mit den ID's fest und die werden dann alle samt in die exe dll gepackt. Da wird nix Pixel für Pixel gezeichnet oder so.
Welche IDE benutzt du?schirrmie
-
oder so. auf jeden 4.9.
Und wie, mitgelinkt?
Du willst mir doch nihct sagen, das Kompilat besitzt bereits die Symbole.....
und braucht sie demnach nicht mehr?
Also, ich kompiliere mein Projekt, und gebe dem nun Drive-Symbole mit, Folder Symbole, File Symbole, die alle irgendwo auf der Platte liegen....die lade ich mit LoadFromFile oder LoadIcon.....
...
das alles wird kompiliert gelinkt, ge"maked"..... und ich habe ne binare exe...
die nicht mehr diese Dinge "einbindet", wie im code aber befohlen?
Mit anderen Worten:
Das "miteinbinden" geschieht nur einmal? BEIM KOMPILIEREN...Und das reicht?
Wieso bringen dann so viele Anwendungen noch .icos mit?
-
Nein nein das hast du falsch verstanden. Du lädst die Symbole nicht mit LoadIcon und dann sind die in deiner Exe. Deine IDE packt sie dir in deine exe und du lädst sie dann im Programm nicht mehr von einem Pfad sondern über ihre ID in deiner exe. Wie gesagt welche IDE benutzt du? Dann könnte man die genauer bsp. geben wie du das machst oder so.
schirrmie
-
Dev-Cpp.
Selbst wenn ich die icons über ne Id lade....... wo sind die denn?
Als kopie in der binäreDatei ...
als Beispiel nehmen wir nun Windows und die Shell32.dll.
Diese icons finde ich nirgens....... aber wenn ich die DLL mit nem Iconeditor öffne, dann sind die sichtbar.
Aber die Suche nach .ico ergibt keine "z.B. Laufwerks-symbole" so wie sie im Explorer verwendet werden, während sie dazusein scheinen, in der Dll.
Nur wie?
Als .dll ist ja nicht aussagekräftig, die Dll ist Code.
Da müsste doch schon pixel für Pixel jedes Symbol gezeichnet werden, um nicht auf Externas zurückgreifen zu müssen...... und wenn doch, dann sind die eben nicht da.
Ich finde sie nicht.Kann mir nur vorstellen, dass ein Bild oder Icon durch eine dll beim Kompilieren von Microsoft tatsächlich umkonvertiert wurde und die DLL alle Daten innehat,l die das Zeichnen dieses icons ermöglichen...
oder aber beim Kompilieren wird es in die exe gelinkt......... und dabei konvertiert....... aber zu was?
Zu einem Bild, das von Windows gezeichnet werden soll?
Es ist schon strrrrange.........
-
Da ist überhaupt nix strange.
Die Icons die stehen nicht noch irgendwo auf der Platte weil sie in der dll oder exe "abgespeichert" sind. Eien exe ist nicht nur einfach binär code. Jede Exe und Dll hat ein bestimmtes Format siehe http://www.wotsit.org/.
Dort werden viele andere Informationen (wie wenn du rechte Maustaste und Eigenschaften und dann steht da ja "Version" und "Herausgeber" und "Name") gespeichert und unter anderen auch Resourcen. Und Resourcen sind bekanntermaßen bmp, icons und auch Dialoge.
Ich weis nicht was du da jetzt nicht versehst
schirrmie
-
, dass auch wenn innerhalb exes eingebundenen Ressourcen drin sind, in denen doch steht
EIN_BILD BITMAP "C:\\my\\folder\\for\\icons\\icon.ico"
und wo ist das Bild, bzw, wo kricht die Ressource, die in die Exe miteingebunden ist, das Bild her, wnen es NICCHT AUF der Platte ist?
Dieses Bild in seinen gesamten Ausmassen, ich sage mal 16*16*256..... und dann noch die Pixelmap........ wo steht das alles nach dem Linken?
Weisst du was ich meine?
Ich programmiere, binde mit ein.....
und habe ich alles gebunden und programmiert, muss das BILD doch in IRGENDEINER FORM vorhanden sein?Welche Form ist das, wenn nicht .ico?
-
Wie oft denn noch das Image oder Bitmap steht in der exe oder in der dll. Wenn du das Format wissen willst dann musst du dir das Format der exe oder dll anschauen (was du bei www.wotsit.org machen kannst, oder Stichwort "PE" für exe'n) Wie wäre es denn wenn du mal erzählst was du vor hast! Willst du die Icons von irgendwelchen Dlls auslesen und auf der Festplatte abspeichern oder wie?
schirrmie
-
wie das dazu kommt, dass ich den Pfad dann nicht mehr brauche.

Meine Idee:
Dieses Quicklanuchpanel, welches auf ner extrataste von Mäusen mit Extrataste gestartet werden kann.

In diesem bisher leeren 6-Eck (sieht cool aus so als 6-Eck)
ist n config button, der mir erlaubt, exes einzubinden, die dann auf dem 6-Eck als Rectangles erscheinen sollen, also ich sage mal das ganze ist n Quicklaunch-Kontextmenü in eigenem Style auf nem extra Button.
und der Config Button öffnet mir n Dialog, in dem ich gerade ein Treeview am erstellen bin (darum geht es mir gerade ), ein Listview habe, wo dann die exes, die schon gewählt wurden, drinstehen und drei buttons dazwischen:
Markierten aus Treeview einfügen, Markierten aus Listview entfernen, alle aus Listview entfernen.
---
Kurzfassung.
Und nun geht es mir darum , die Icons für die Treeview Elemente zu klären.
Bisher machte ich das wohl umständlich.....
denn ich las gerade etwas von SHGetFilenochwas-also Shellfunktionen, die anhand des ermittelten Datei-Typs automatisch das richtige Systemicon nehmen.
-----
Bisher nahm ich n Icon editor, öffnete die ganzen System.dll's , in denen die Icons drin waren, las deren ID und packte die so per LoadDll und dem ganzen Rest in die Imagelist., mit ImageList_LoadIcon
---
Und da entstand meine Frage: Ich sehe so viele Icons in der Dll, aber diese selber greift auf keine einzige .ico-Ressource zu, denn , akls ich die suchte, fand ich die nicht.
Diese sind in irgendeiner Form in der dll...... und da wurde ich stutzig,
,in welcher wohl...
Hoffe, nun verstehst Du, warum ich das so genau wissen will und woher dieser Ansatz kam.


-
me-S-on schrieb:
wie das dazu kommt, dass ich den Pfad dann nicht mehr brauche.

Ich antworte einfach mal auf deine erste Frage weil das andere war mir bissel zu viel und durchgesehen habe ich auch nicht. Also mal angenommen in deiner exe ist ein ico drinn. Dann nimmst du einfach
LoadImage(hInstance, MAKEINTRESOURCE(IDD_ICON1), IMAGE_ICON, 0, 0, LR_DEFAULTCOLOR);und fertig. Der erste Parameter muss dein HINSTANCE sein und als zweiten Parameter übergibst du nicht mehr den Pfad sondern die ID! Wenn dir was nicht klar ist, guck in die MSDN!
Ka ob das das ist was du wissen wolltest?schirrmie