Exe-Icon für BlitzMax durch Icon.o erstellen
Übersicht BlitzMax, BlitzMax NG FAQs und Tutorials
MidimasterBetreff: Exe-Icon für BlitzMax durch Icon.o erstellen |
Fr, Mai 28, 2010 14:44 Antworten mit Zitat |
|
---|---|---|
Exe-Icon für BlitzMax durch Icon.o erstellen
Es sind ja schon einige Wege beschrieben, wie man ein TrayIcon oder Exe-Icon in das eigene Spiel bekommt. Meist wird geraten, die EXE-Datei zunächst zu erstellen und nachträglich mit einem Resourceneditor das Icon hinzuzufügen. Besonders lästig an dieser Methode ist, dass jedesmals beim Compilieren solche Icons wieder weg sind. Deshalb möchte ich hier einen superbequemen Weg beschreiben, der gleich eine *.o Datei erzeugt und daher keine Nacharbeit in der EXE-Datei mehr benötigt. Einziges Manko an diesem Weg: Das Ganze funktioniert nur wenn auf dem Rechner bereits MINGW Gnu C-Compiler ordnungsgemäß installiert ist. Wer die ICO Datei schon hat kann gleich bei 3. weiterlesen. 1. geeignete PNG-Datei erstellen: Zunächst speichert man das gewünschte Bild als PNG-Datei ab. Schon beim Malen des Bildes ist darauf zu achten, dass der Hintergrund wirklich transparent ist. 2. umwandeln in eine ICO-Datei Mit dem kostenlosen Programm IcoFX wird nun aus dem PNG-Bild eine ICON.ICO-Datei. Das PNG-Bild wird dazu über "Bild importieren" geladen. Man kann nun einfach alle weiteren Menüpunkte bestätigen. So wird das Bild zu einem 48x48px Icon in der ICO-Datei. Die kann man jetzt gleich abspeichern. Verwende den Namen "icon.ico" Bis hierhin war alles so ähnlich wie bei den anderen Tutorials, aber jetzt..... Die Schritte 3 bis 5 sind nur einmalig nötig. Später kann man für weitere *.O-Dateien direkt bei 6. weitermachen 3. Einen neuen Ordern anlegen In diesem Ordner werden später zwei Scripte die *.O Datei automatisch erzeugen. Der Pfad zu dem Ordner sollte kurz sein und die einzelnen Unterverzeichnisse max 8 Buchstaben haben und keine Leerzeichen enthalten. (altes 8:3 DOS-Format) Wir wählen daher "C:\MakeIcon\". 4. RC-Datei erstellen In diesen Ordner wird nun mit einem Text-Editor eine Text-Datei mit dem Namen "icon.rc" angelegt. Die Datei enthält zwei Zeilen: Achte auf die Leerzeichen! Die zweite Zeile ist eine Leerzeile. Code: [AUSKLAPPEN] 101 ICON C:\makeicon\icon.ico
5. BAT-Datei erstellen In diesen Ordner wird nun mit einem Text-Editor eine zweite Text-Datei mit dem Namen "MakeIt.bat" angelegt. Die Datei enthält eine Zeile: Achte auf die Leerzeichen!Code: [AUSKLAPPEN] windres -i C:\makeicon\icon.rc -o C:\makeicon\icon.o
6. Umwandeln Nun wird die icon.ico in den MakeIcon-Ordner kopiert und danach die Datei MakeIt.bat durch Doppelklick ausgeführt. Anschließend finden wir in dem Verzeichnis die Fertige ICON.O. Anmerkung: das Ganze funktioniert nur wenn auf dem Rechner MinGW (Gnu C-Compiler) ordnungsgemäß installiert ist, was bei den meisten BlitzMax-Usern aber sowieso der Fall sein dürfte. 7. Einbinden ins eigene Programm Die ICON.O kommt nun in das Wurzelverzeichnis des eigenen Spiels und wird mit diesen Zeilen gleich zu Beginn des Codes automatisch ins Spiel eingebunden: BlitzMax: [AUSKLAPPEN] SuperStrict 8. Weitere Icons Für weitere *.O Dateien musst du ab jetzt nur noch weitere ICON.ICO in den MakeIcon Ordner ziehen und die alte durch die neue Datei ersetzen und dann das Script starten. Die alte ICON.O wird dabei ohne Nachfrage überschrieben. Also Sicherungskopieren anlegen. Nachtrag: Manifest einbinden Benutzt man so eine eingebundene *.O-Datei kann es zu Bildfehlern im Programm führen. Gerade wenn man auch MaxGui ins eigene Programm einbinden kommt es häufig zu diesen Fehlern. Die Ursache liegt darin, dass das sog. Manifest des Programms zerstört wurde. Es ist daher immer klüger gleich in die ICON.RC ein neues Manifest einzubinden. Bei dieser Gelegenheit lassen sich dann auch noch Herstellerinformationen in das Programm einbauen. Folgende Änderungen sind nötig: Die Icon.rc: Code: [AUSKLAPPEN] 1 24 "manifest.manifest"
101 ICON C:\makeicon\icon.ico 1 VERSIONINFO FILEVERSION 4,0,1,0 PRODUCTVERSION 4,0,1,0 FILEOS 0x40004 FILETYPE 0x1 { BLOCK "StringFileInfo" { BLOCK "040904b0" { VALUE "Comments", "music theory software" VALUE "CompanyName", "Midimaster Music Education Software" VALUE "FileVersion", "2012.02.24.0" VALUE "FileDescription", "RhythmTrainer" VALUE "InternalName", "RhythmTrainer" VALUE "LegalCopyright", "© Peter Wolkersdorfer" VALUE "LegalTrademarks", "Midimaster" VALUE "OriginalFilename", "RhythmTrainer" VALUE "ProductName", "RhythmTrainer" VALUE "ProductVersion", "4.0.1.0" } } BLOCK "VarFileInfo" { VALUE "Translation", 0x0407, 0, 0x0409, 0, 0x0405, 0 } } in der ICON.RC sind zwei Dinge neu hinzugekommen. Wichtig ist die Zeile mit dem Manifest: Code: [AUSKLAPPEN] 1 24 "manifest.manifest"
Sie bindet eine weitere Datei ein und sorgt dafür, dass die Bildfehler verschwinden. Der Rest ist optional und enthält Daten über die Version deines Programms und deine Software-Schmiede. Du ersetzt dort alle Inhalte natürlich durch eigene Werte. Die Daten kannst du später sehen, wenn Du mit Rechtsklick auf deine EXE die "Eigenschaften" öffnest. Die Manifest.manifest Code: [AUSKLAPPEN] <?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'> <dependency> <dependentAssembly> <assemblyIdentity type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*' /> </dependentAssembly> </dependency> </assembly> hier muss nichts geändert werden und nichts persönliches angepasst werden. Wenn man nun die MakeIcon.Bat startet, wird eine verbesserte ICON.O erzeugt und die in den unteren Kommentaren beschriebenen Bildfehler verschwinden. Auch erscheint jetzt links oben in deinem Programm ein weiteres Bild deines Icons. Außerdem sind nun die "Eigenschaften" deiner EXE mit sinnvollen Inhalten gefüllt. Vielen Dank an jsp und Eisvogel, die mir die Grundlagen für diesen Nachtrag lieferten. Nachtrag II: Symbol in der Taskleiste Holzchopf beschreibt in diesem Post, wie man erreicht, dass zusätzlich auch auf der Taskleiste und oben links im Fensterrahmen das Symbol erscheint. Hierfür muss eine kurze C-Funktion aufgerufen werden. Anleitung: https://www.blitzforum.de/foru...210#416210 |
||
- Zuletzt bearbeitet von Midimaster am Mo, Feb 29, 2016 11:19, insgesamt 6-mal bearbeitet
Der Eisvogel |
Fr, Mai 28, 2010 23:55 Antworten mit Zitat |
|
---|---|---|
Genial Midimaster!
Wie kommst du zu solchen Kenntnissen? |
||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
HolzchopfMeisterpacker |
Sa, Mai 29, 2010 12:06 Antworten mit Zitat |
|
---|---|---|
Meinst du das jetzt sarkastisch? Natürlich war diese Methode dem ein oder anderen schon (wohl aus dem englischen Forum) bekannt - aber ich find's super, dass sich Midimaster die Mühe nimmt, das ganze hier kurz und verständlich zu übersetzen =) | ||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
Der Eisvogel |
Sa, Mai 29, 2010 16:44 Antworten mit Zitat |
|
---|---|---|
Nein das ist ernst gemeint. Ich finde es verblüffend, was man so alles machen kann, aber ich würde gerne wissen, wie man zu solchen Kenntnissen gelangt. Ich bin einfach nur fasziniert. | ||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
das wurgel |
Sa, Mai 29, 2010 20:08 Antworten mit Zitat |
|
---|---|---|
Kann man auch mehrere Icons in verschiedenen Größen einbinden? Wenn ja, gibt es eine Möglichkeit alle Icons in eine o-Datei zu packen? | ||
1 ist ungefähr 3 |
HolzchopfMeisterpacker |
Sa, Mai 29, 2010 20:11 Antworten mit Zitat |
|
---|---|---|
Ja. Indem du alle Grössen in eine .ico-Datei packst. Nachträglich geht das u.A. mit dem Tool "IcoBundle" | ||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
das wurgel |
Mo, Mai 31, 2010 20:06 Antworten mit Zitat |
|
---|---|---|
Ah, wusste garnicht das man mehrere Icons in eine Datei packen kann, danke! | ||
1 ist ungefähr 3 |
JPD |
Di, Aug 03, 2010 15:15 Antworten mit Zitat |
|
---|---|---|
Bei mir zerschiest es hierbei die schöne Aero-Oberfläche. Hat sonst noch jemand das Problem (Win7 64x) | ||
Farbfinsternis |
Sa, Apr 09, 2011 15:24 Antworten mit Zitat |
|
---|---|---|
Sorry dass ich den Fred hier nochmal ausbuddele ... aber gibt es irgendeinen Trick der auch bei 64Bit OS funktioniert? Hier unter Win7 64Bit tut sich rein gar nichts. | ||
Farbfinsternis.tv |
XeresModerator |
Sa, Apr 09, 2011 17:29 Antworten mit Zitat |
|
---|---|---|
Funktioniert prinzipiell bei mir. Gibt's Fehlermeldungen? Probiert, Pfade in Anführungszeichen zu setzen? | ||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Farbfinsternis |
Sa, Apr 09, 2011 18:52 Antworten mit Zitat |
|
---|---|---|
Das Objekt wird ja erzeugt und auch in BMax importiert, nur beim Icon des Executable tut sich nichts. Habe hier Win7 Prof 64Bit | ||
Farbfinsternis.tv |
klin |
So, Apr 10, 2011 3:34 Antworten mit Zitat |
|
---|---|---|
Hinzufügung: Man kann auch mit der RC-Datei weitere bestimmte Informationen einfügen. Wie z.B. Version, Hersteller, Dateibeschreibung usw. (alles was man bei Eigenschaften sehen kann)
Evtl. könntest du, Midimaster, es auch noch hinzufügen. Ansonsten gute Arbeit. Allerdings errinnere ich mich sehr schwach, dass es schonmal sowas hier gab. Allerdings in einem Beispiel. Oder wars doch in dem Englischen Forum? MFG Klin |
||
Midimaster |
Di, März 06, 2012 10:49 Antworten mit Zitat |
|
---|---|---|
So, dann push ich heute mal was...
Ich habe soeben das Tutorial um ein weiteres Kapitel ergänzt (siehe erster Beitrag). Jetzt wird beschrieben, dass man ein Manifest in solche *.O-Dateien einbinden sollte und wie man das bewerkstelligt. Vielleicht könnte jeman auf einem 64-bit System testen, ob damit auch die von Farbfinsternis beschriebenen Probleme gelöst werden können? |
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
HolzchopfMeisterpacker |
So, Feb 28, 2016 21:33 Antworten mit Zitat |
|
---|---|---|
So, dann push ich heute auch mal was... Alter Thread, aber relevante Information
Wenn man auf die oben erwähnte Art ein Symbol in die .exe einbindet, wird dieses zwar im Explorer als Symbol dargestellt, nicht aber auf der Taskleiste oder oben links im Fensterrahmen. Zumindest nicht, wenn man ein mit Graphics() erstelltes Fenster hat. Um dem entgegen zu wirken, fügte ich jeweils im Source von glgraphics.win32.c in der Fenster-Erstell-Funktion eine Zeile ein, die einfach zusätzlich noch gleich das Symbol lud und anfügte. Um endlich mal mit diesem Gehacke aufhören zu können, habe ich nun folgende Lösung: Eine C-Funktion, welche dem aktuellen Fenster das eingebundene Symbol aufbrummt. Geht ganz einfach: Zusätzlich zum .o File importiert ihr folgendes .c File Code: [AUSKLAPPEN] #include <brl.mod/system.mod/system.h>
void SetIcon(){ SendMessageA(GetActiveWindow(), WM_SETICON, ICON_BIG, LoadIcon( GetModuleHandle(0),MAKEINTRESOURCE(101) )); } Dann macht ihr die Funktion in einem Extern-Block noch verfügbar und könnt sie schliesslich nach Graphics() aufrufen, um das Symbol zu setzen. Beispiel BlitzMax: [AUSKLAPPEN] SuperStrict mfG Holzchopf |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
Übersicht BlitzMax, BlitzMax NG FAQs und Tutorials
Powered by phpBB © 2001 - 2006, phpBB Group