Wie ändere ich das exe icon bei einer BMax *.exe

Übersicht BlitzMax, BlitzMax NG FAQs und Tutorials

Neue Antwort erstellen

shure_kyu

Newsposter

Betreff: Wie ändere ich das exe icon bei einer BMax *.exe

BeitragSa, Nov 26, 2005 2:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Diese frage haben sich bestimmt schon jeder gestellt aber es ist recht einfach..

ladet euch als ersteinmal den resource hacker runter
hier - ResourceHacker


- so dann öffnet ihr die jeweilige *.exe

- dann geht ihr ober auf ACTION

- dann da ganz unten auf ADD a New Resource..

- dann auf Open file with new Ressource

- wählt dann das icon aus (*.ico)

- bei Resource Name kann man eintragen was man will

- und das bei Resource Language kann man weg lassen

- nur noch ADD RESOURCE drücken

- und dann noch FILE --> SAVE die datei unter dem exe namen speichern

*hier nochmal bildlich*
user posted image

------------------------------------------------------------------

so das wars ich hoffe ich konnte euch damit helfen weil sonst die erklärungen so mit neuer BMK.exe und per mingw compiler mit *.o datei waren doch sehr dämlich. Mit diesem müsste es 100%ig klappen, hab es gestern 5 mal ausprobiert und jedesmal hats geklappt also traut euch...


cya shure_kyu

_______//¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\________
◄Blitz 3D/MAX • PC - 2x 3.16Ghz, 4GB-Ram, ATi HD 4890 1024MB• win7 • site$ Rush2Play ° My-Htc.de
¯¯¯¯¯¯¯\__________________________________________________________________________//¯¯¯¯¯¯¯¯
BBP-RSS FEED Halt dich auf dem laufenden!
(C)Shure_kyu
  • Zuletzt bearbeitet von shure_kyu am Sa, Nov 26, 2005 2:21, insgesamt 3-mal bearbeitet

d-bug

BeitragSa, Nov 26, 2005 15:24
Antworten mit Zitat
Benutzer-Profile anzeigen
So, nun das ganze nochmal für MaxGui und während der Laufzeit. Wink

Die original Decls und Funktion sind von X-Pressive (siehe hier)
Vielen Dank nochmal an Suco-X, der mir die Konvertierung zum CString einbaute.

Code: [AUSKLAPPEN]
Extern "win32"
   Function GetActiveWindow ()
   Function SetClassLongA (hwnd,index,NewLong)
   Function ExtractIconA (hwnd,file:Byte Ptr,index)
End Extern

?win32
Function SetAppIcon (file:String)
   If Not FileType (file)
      Notify "Icon "+file+" not found ..."
   Else
      Local hwnd = GetActiveWindow ()
      Local icon = ExtractIconA (hwnd,file.ToCString(),0)
      SetClassLongA (hwnd,-14,icon)
   EndIf
End Function   
?


Dann noch ein kleines Beispiel dazu :
Code: [AUSKLAPPEN]
Global DeinIcon:String = "blub.ico"

test:tgadget = CreateWindow ("Test Fenster",200,200,300,200)
SetAppIcon (DeinIcon)

While WaitEvent()
   Select EventID()
      Case EVENT_WINDOWCLOSE
         End
   End Select
Wend


Ist jetzt leider nur für Windows. Vielleicht kennt ja einer von euch die passende Alternative für Linux oder MacOS.

Hoffe es hilft euch weiter...

poet

BeitragMi, Dez 07, 2005 22:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab versucht das ganze im Graphics Mode zu machen, und es funktioniert auch, so halb. Das Icon in der Taskleiste wird erstezt, das Icon in der Titelleiste des Fensters bleibt. Hat jemand ne Idee was ich da machen kann? Window refreshen oder so?

Naja, jedenfalls noch ein Tip: Man kann als IconDatei auch das Exe angeben wenn man mit ResHacker das Icon darin eingefügt hat.
Also SetAppIcon ("DeinExe.exe")

Aber damit gleich zu noch ner Frage.
Weiss jemand wie man ein Icon gleich beim compilen einbinden kann?
Auf http://ed.rtv.free.fr/freestuff.htm gibts ein "BMK compiler addon" das das können soll, nur leider funktioniert der Download Link nicht.
Wäre viel angenehmer als jedesmal extra mit ResHacker das Icon nachträglich einzubauen ...

poet

BeitragSa, Dez 10, 2005 15:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab jetzt ausserdem noch ne viel sauberere Lösung gefunden.
http://www.blitzbasic.com/Comm...opic=53908
So muss man nur einmal ein ResourceObject erstellen, danach kann man das dann einfach mit Import ins Exe einbinden ...

~Editiert~
etwas freundlicher gemacht - weil der thread gespalten wurde
Jan_

poet

BeitragSa, Dez 10, 2005 18:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Und wenn man sich nicht scheut an den Grafik Modulen was zu ändern kann man das Window Icon auch von Grund auf darstellen lassen ...

Für GLGraphics muss man in glgraphics.win32.c in der Funktion _initWndClass folgende Zeile einfügen:
Code: [AUSKLAPPEN]
wc.hIcon=(HICON)LoadIcon( GetModuleHandle(0),MAKEINTRESOURCE(101) );

Das sieht dann z.B. so aus:
Code: [AUSKLAPPEN]
static void _initWndClass(){
   static int _done;
   if( _done ) return;
    WNDCLASS wc={0};
   wc.style=CS_HREDRAW|CS_VREDRAW|CS_OWNDC;
   wc.lpfnWndProc=(WNDPROC)_wndProc;
   wc.hInstance=GetModuleHandle(0);
   wc.lpszClassName=CLASS_NAME;
   wc.hIcon=(HICON)LoadIcon( GetModuleHandle(0),MAKEINTRESOURCE(101) );
   wc.hCursor=(HCURSOR)LoadCursor( 0,IDC_ARROW );
   wc.hbrBackground=0;//(HBRUSH)GetStockObject(BLACK_BRUSH);
   if( !RegisterClass( &wc ) ) exit(-1);
   _done=1;
}


Für D3D7 muss man in d3d7graphics.bmx in der Funktion CreateHWND folgende Zeile einfügen:
Code: [AUSKLAPPEN]
wc.hIcon=LoadIconA(hinst,Byte Ptr(101))

Das sieht dann z.B. so aus:
Code: [AUSKLAPPEN]
Function CreateHWND(width,height,fullscreen)
   Local hinst=GetModuleHandleA(0)
   Local wc:WNDCLASS=New WNDCLASS
   Local style,ex_style,hwnd
   
   wc.hInstance=hinst
   wc.lpfnWndProc=WndProc
   wc.hIcon=LoadIconA(hinst,Byte Ptr(101))
   wc.hCursor=LoadCursorA( Null,Byte Ptr IDC_ARROW )
   wc.lpszClassName=DX_CLASS_NAME.ToCString()
   Local res=RegisterClassA( wc )



"z.B." weil sich mit kommenden Updates der grundlegende Code evtl. verändert. Man muss diese Änderungen natürlich auch nach jedem Update / SyncModules neu einbauen.

Übrigens kann man, wenn man eh schon da ist, auch ein Minimierungs oder Maximierungs Icon/Funktion einbinden lassen ... dazu muss man WS_MINIMIZEBOX bzw. WS_MAXIMIZEBOX einbauen ...
Bei D3D7 ein paar Zeilen weiter unten, bei GL in der Funktion bbGLGraphicsCreateGraphics ...
Wo genau das hin muss, müsst ihr selber finden ;)
 

ChristianK

BeitragFr, Dez 08, 2006 14:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Das geht aber auch unkomplizierter:
In MinGW gibt's das Tool "res2coff".
Damit kann man aus einer ".res" Datei eine ".o" Dateien machen.
Die kann dann mit:

Code: [AUSKLAPPEN]
Import "myresources.o"

eingefügt werden.

Außerdem kann die Datei z.B. auch die Versionsinfo enthalten.

shure_kyu

Newsposter

BeitragMi, Jul 11, 2007 14:38
Antworten mit Zitat
Benutzer-Profile anzeigen
ich finde es gut wie du meinen post ganz oben gelsen hast


Zitat:
....sonst die erklärungen so mit neuer BMK.exe und per mingw compiler mit *.o datei waren doch sehr dämlich.



Idea ich wollte noch ewähnen das der oben genannte trick auch bei b+ klappen sollte !!

_______//¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\________
◄Blitz 3D/MAX • PC - 2x 3.16Ghz, 4GB-Ram, ATi HD 4890 1024MB• win7 • site$ Rush2Play ° My-Htc.de
¯¯¯¯¯¯¯\__________________________________________________________________________//¯¯¯¯¯¯¯¯
BBP-RSS FEED Halt dich auf dem laufenden!
(C)Shure_kyu

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG FAQs und Tutorials

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group