C++ Bild in exe integriert?!

xtrars

Ensign
Dabei seit
Juni 2010
Beiträge
148
Hallo an alle,
ich habe mir vor kurzem eine Exe geschrieben... und das Funktionierte auch super. Die Exe macht das was sie machen soll (aktuelle Mausposition anzeigen). Allerding hab ich aus neugier ein Frameset genutzt; auch das klappte. Jetzt habe ich aber 2 Dateien (Die Exe und das Bild) und wollte fragen wie das geht, dass man das Bild in die Exe integrieren kann und dann das mit BrushCopy oder CopyRect aufrufen kann. Habe das ganze mal bei Rapidshare hochgeladen um sich ein besseres Bild machen zu können. Es liegen bei: Der Quellcode, die Exe, das Bild.

Danke im Voraus...

http://rapidshare.com/files/455173752/Mausposition.zip
 
Zuletzt bearbeitet:

xtrars

Ensign
Ersteller dieses Themas
Dabei seit
Juni 2010
Beiträge
148

Fortatus

Lt. Commander
Dabei seit
Juni 2009
Beiträge
2.023
Sprache ist C++
Mit Framework meint er, dass du ja wohl nicht von 0 aus einfach ne Datei geschrieben hast. Z.B. brauchst du Bibliotheken für die Grafikdarstellung, was z.B. bei C++ Qt oder wxWidgets wären. Wahrscheinlich wirst du außerdem ne Entwicklungsumgebung nutzen, die Basisfunktionen zur Verfügung stellt etc.
 

He4db4nger

Captain
Dabei seit
Feb. 2007
Beiträge
4.019
ohne das jetzt runterzuladen wollen, aber wenn du sagst, welche sprache du benutzt hast (c,c++,java,c#, f#, scala...) bzw. welches framework (.net, etc) dann könnten dir das einige auch so sagen^^
 

Fortatus

Lt. Commander
Dabei seit
Juni 2009
Beiträge
2.023

xtrars

Ensign
Ersteller dieses Themas
Dabei seit
Juni 2010
Beiträge
148
Also ich habe eigentlich alle Laufzeitbibliotheken in die Exe integriert... müsste also gehen... Für die Frage mit was ich Programmiert habe: C++Builder XE
Ergänzung ()

Um Fortanus recht zu geben: Die Sprache ist C++ (wie eigentlich der Link schon sagt^^)
 

gibtsnet

Lt. Junior Grade
Dabei seit
Aug. 2006
Beiträge
424
Also bei C# gibt es die möglichkeit ein Bild als Resource dem Projekt hinzuzufügen, ich würde mal meinen das das auch mit C++ geht.
 

xtrars

Ensign
Ersteller dieses Themas
Dabei seit
Juni 2010
Beiträge
148
ja aber wie...^^ das aufrufen macht mir die meisten sorgen^^
 

Cry & Die

Cadet 3rd Year
Dabei seit
Jan. 2011
Beiträge
40
Mir fallen für Windows spontan zwei Möglichkeiten ein:

1. Wenn das Bild nicht all zu groß ist, dann pack es in ein statisches Feld:
static unsigned char myImage[] = {0x01, 0x02, 0x03, ....};
Um die Liste mit den Hexwerten zu erzeugen bauste dir einfach ein kleines Script, alternativ gibts im Internet bestimmt etwas, dass dir diese Arbeit auch abnimmt.

2. Leg das File als "Resource" ab. Das sind Zusatzinfos, die mit in die .exe reinkommen. Die kannste dann später zur Laufzeit mit Hilfe der WinAPI wieder auslesen. Normalerweise werden diese Resourcen über Textdateien mit der Endung .rc und einem speziellen Compiler (Bei MinGW zb das Tool "windres") erzeugt und dann beim Linken mit in die .exe gepackt.

Siehe Wikipedia: http://en.wikipedia.org/wiki/Resource_(Windows)
Nachtrag: Beispiel mit einer eingebetteten Textdatei: http://stackoverflow.com/questions/...in-a-resource-in-a-native-windows-application
 
Zuletzt bearbeitet: (Nachtrag mit Beispiel)

[GP] mino

Lt. Commander
Dabei seit
März 2009
Beiträge
1.904
asso.. du hast einen c++ von ehemals borland :)
hatte vor dekaden mal mit delphi zu tun, denke das prinzip wird gleich geblieben sein.

jedenfalls wird beim compilieren eine *.res datei mit in deine *.exe gelinkt.
in diese *.res-datei kommt dein bild hinein.

dazu gibt es bereits ein mitgeliefertes tool - .. falls du es nicht findest, nimm eins wie dieses hier.
 

xtrars

Ensign
Ersteller dieses Themas
Dabei seit
Juni 2010
Beiträge
148

[GP] mino

Lt. Commander
Dabei seit
März 2009
Beiträge
1.904
mit den diversen resource-editoren kannst auch einsehen ob das bild in die *.exe reingekommen ist. wenn das der fall ist, wirst mehrere möglichkeiten haben um an diese resource zur laufzeit zuzugreifen. wenns so weit ist und du nicht weiterkommst, sag bescheid.

damit du bescheid weißt, wo der builder seine wuzeln her hat, lies mal hier.
 
Zuletzt bearbeitet:

pcw

Lt. Commander
Dabei seit
Juli 2001
Beiträge
1.676
Zitat von raudy1992:

Wenn es ist wie in delphi, dann im Hauptmenü vom IDE-Fenster: Projekt->Ressource->Hinzufügen->"Deine Datei wählen"->Ok

Dann via Funktion LoadImage oder CImage::LoadFromResource laden.

Ich lehn mich jetzt mal aus dem Fenster und behaupte, dass der C++Builder auch die VCL beherrscht und es dementsprechend LoadFromResource-Methoden in der normalen Image-Klasse gibt, du aber genausogut auf den ganzen Käse verzichten kannst, einfach ein Image auf das Form legen kannst, den Bild reinlädst und dir den ganzen Ressourcen und APi-Käse sparst.
 

xtrars

Ensign
Ersteller dieses Themas
Dabei seit
Juni 2010
Beiträge
148
Danke an alle... eure Vorschläge uns Anregungen haben mich schon mächtig nach Vorn gebracht. Zwar hab ich jetzt noch keine non-plus ultra Lösung aber ich muss mich ja selber noch ein wenig anstrengen^^.
 
Top