[B3D] Pöse kleine Pilderchen (Probs mit Icons)

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

preachie

Betreff: [B3D] Pöse kleine Pilderchen (Probs mit Icons)

BeitragMi, Apr 12, 2006 1:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo zusammen,

ich weiß, dass das Thema Icons schon zu Hauf behandelt wurde, doch es ist unfassbar, die 5 Seiten Suchergebnisse haben mir nicht weitergeholfen Sad

Also fangen wir mal so an, wie jeder dieser Posts anfängt:
Ich möchte das Icon der kompilierten Exe austauschen Wink

Habe jetzt schon diverse Wege ausprobiert, BlitzEdit2 (sieht recht nett aus, muss ich mir mal näher ansehen Wink), ResHacker und den 'internen Weg' über die System DLLs.

Alles hat soweit auch mehr oder weniger funktioniert. Im Explorer wird das korrekte Icon angezeigt, wenn ich das Programm starte, wird das korrekte Icon in der Taskleiste angezeigt.

Was ich bislang jedoch noch nicht geschafft habe, ist dass auch in der Titelzeile des Fensters das korrekte Icon angezeigt wird.
Ich weiß jetzt nicht, an welcher Stelle ich etwas verpasst habe, aber es wäre sehr nett, wenn mir jemand weiterhelfen könnte.

Vielen Dank im voraus,

schönen Gruß
Preachie

P.S.: Was ich vergessen hab zu erwähnen, ist dass es sich hier konkret um B3D handelt... hab den Titel nochmal entsprechend angepasst

EPS

BeitragMi, Apr 12, 2006 12:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Um das Icon in der Titelleiste des Fensters zu ändern, muß man die API bemühen. ResHacker usw. ändern nur das Icon der Datei.

So, hier mal 2 Lösungen. Zunächst für B3D:

Code: [AUSKLAPPEN]
Graphics 640,480,0,2

Const WM_SETICON = $80                              ;--> Konstanten für Icon im Fenster
Const LR_LOADFROMFILE = $10
Const ICON_SMALL = 0
Const ICON_BIG = 1
Const IMAGE_ICON = 1

AppTitle "B3D Test"
Global hWin = api_GetActiveWindow()

;--> Fenstericon anlegen
icon = api_LoadImage(0, "bws.ico", IMAGE_ICON, 0, 0, LR_LOADFROMFILE)
SendMessage(hWin, WM_SETICON, ICON_SMALL, icon)
SendMessage(hWin, WM_SETICON, ICON_BIG, icon)

SetBuffer BackBuffer()
Repeat
   Cls
   Flip
Until KeyHit(1)

End


und hier für Blitz+
Code: [AUSKLAPPEN]
Const WM_SETICON = $80                              ;--> Konstanten für Icon im Fenster
Const LR_LOADFROMFILE = $10
Const ICON_SMALL = 0
Const ICON_BIG = 1
Const IMAGE_ICON = 1

;--> Blitz+
win = CreateWindow("Test",100,100,640,480,0,1)
hWin = QueryObject(win,1)

;--> Fenstericon anlegen
icon = api_LoadImage(0, "bws.ico", IMAGE_ICON, 0, 0, LR_LOADFROMFILE)
SendMessage(hWin, WM_SETICON, ICON_SMALL, icon)
SendMessage(hWin, WM_SETICON, ICON_BIG, icon)

Repeat

   Select WaitEvent(1)
      ;--> Beenden
      Case $803: Exit
   End Select
   
   If KeyHit(1) Then Exit
   
Forever

End


Damit das ganze funktioniert braucht es natürlich zum einen eine ICON Datei (im Beispiel als bws.ico bezeichnet) und zum anderen die nötigen Befehle in der USER32.DECLS:

Code: [AUSKLAPPEN]
.lib "user32.dll"

SendMessage%(hwnd, msg, wParam, mParam):"SendMessageA"
api_LoadImage% (hInst%, lpsz$, un1%, n1%, n2%, un2%) : "LoadImageA"
api_GetActiveWindow% () : "GetActiveWindow"


Ich hoffe das hilft.
mGUI - Graphical User Interface für Blitz3D...Informationen gibt es hier

Man kann sich öfter als zweimal im Leben halb tot lachen.

preachie

BeitragMi, Apr 12, 2006 18:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo EPS,

vielen Dank für die Antwort.
Sieht sehr ähnlich zu der Lösung, die ich bereits gefunden und getestet hatte, mit einem Unterschied, dass Deine Lösung funktioniert Wink

Also nochmals vielen Dank für Deine Hilfe!

Eine alternative Möglichkeit, das Icon fest in die Exe zu integrieren gibt es demzufolge nach nicht?

Gruß
Preachie

EPS

BeitragMi, Apr 12, 2006 18:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Nun, möglicherweise ist es auch möglich die Ressource, also das Icon, mit ResHacker an die EXE zu binden und im Programm dann per API an das Fenster zu "übergeben".

Erstens würde dies allerdings nur in der compilierten EXE funktionieren und zweitens hab ich keine Ahnung wie und/oder ob das überhaupt geht.
mGUI - Graphical User Interface für Blitz3D...Informationen gibt es hier

Man kann sich öfter als zweimal im Leben halb tot lachen.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group