Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Icon mit CreateIconFromResourceEx aus Quelltext laden (https://www.delphipraxis.net/83658-icon-mit-createiconfromresourceex-aus-quelltext-laden.html)

DGL-luke 5. Jan 2007 15:19

Re: Icon mit CreateIconFromResourceEx aus Quelltext laden
 
Hier im Forum suchenHxD Hexeditor ?

NicoDE 5. Jan 2007 15:28

Re: Icon mit CreateIconFromResourceEx aus Quelltext laden
 
Zitat:

Zitat von Luckie
Gut, nehmen wir an, ich habe dann das Byte-Array. Wie geht es dann weiter?

Delphi-Quellcode:
Icon := CreateIconFromResource(PByte(@IconData[0]), SizeOf(IconData), True, $00030000);

Reinhard Kern 5. Jan 2007 15:52

Re: Icon mit CreateIconFromResourceEx aus Quelltext laden
 
Zitat:

Zitat von Luckie
Dann hab eich ja wieder zwei Dateien. Also noch mal. Es handelt sich dabei um ein About-Fenster. In diesem Fenster möchte ich gerne mein Icon Anzeigen. Lade ich es aus einer Resourcen-Datei muss ich die Ressourcen-Datei immer mitschleppen und einbinden. Und genau das will ich eben nicht. Ich will nur diese eine Unit haben mit dem Fenster drinne.

Hallo,

brutal und ohne Knowhow:

nimm dein Icon, mach SaveToStream, mach einen Hexdump davon und formatiere das Ergebnis als Delphi const array of byte. In C ginge das leicher, Delphi ist für so was herzlich ungeeignet.

In deiner Unit erzeugst du eine TMemoryStream, kopierst das array rein und machst MyIcon.LoadFromStream.

Auf die Art musst du nicht wissen, wie ein Icon aufgebaut ist.

Gruss Reinhard

Luckie 5. Jan 2007 16:07

Re: Icon mit CreateIconFromResourceEx aus Quelltext laden
 
Das Icon habe ich jett als Byte-Array:

Delphi-Quellcode:
ByteArray: array[0..3261] of Byte = (
    $00,$00,$01,$00,$01,$00,$20,$20,$00,$00,$01,$00,$18,$00,$A8,$0C,$00,$00,$16,$00,$00,$00,$28,$00,$00,$00,$20,$00,$00,
    $00,$40,$00,$00,$00,$01,$00,$18,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
    $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
    $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
    $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
    $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
    $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$C2,$C2,$C2,$A8,$A8,$A8,$A8,$A8,$A8,$C2,$C2,$C2,$00,$00,$00,$00,$00,$00,
    $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
    $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
    ...);
Aber hIcon ist leider null:
Delphi-Quellcode:
hIcon := CreateIconFromResource(PByte(@ByteArray[0]), SizeOf(ByteArray), True, $00030000);
GetLastError liefert auch null. :(

PS: Der Icon-Header ist da noch drinne, aber das sollte nichts machen, dann ist das Icon eben kaputt, was angezeigt wird, aber das sollte ihm egal sein.

NicoDE 5. Jan 2007 16:10

Re: Icon mit CreateIconFromResourceEx aus Quelltext laden
 
Du sollst ja auch nicht die Icon-Datei in das Array packen, sondern die Daten eines Icons.
Entferne die ersten 22 Bytes (alles vor $28), dann sollte es gehen.

edit: blöde Smilies :)
ps: Nein, das ist der Funktion nicht egal (sie erwartet einen gültigen BITMAP-Header (oder optional einen PNG-Header unter Vista))

Luckie 5. Jan 2007 16:12

Re: Icon mit CreateIconFromResourceEx aus Quelltext laden
 
:firejump:

:kiss:

Es geht!

NicoDE 5. Jan 2007 16:16

Re: Icon mit CreateIconFromResourceEx aus Quelltext laden
 
Zitat:

Zitat von Luckie
Es geht!

Alles wird gut.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:28 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz