Probleme mit CreateImage und LoadImage. Nach 23 ist Schluss!

Anfängerfragen zum Programmieren mit PureBasic.
OlderCoder
Beiträge: 134
Registriert: 18.03.2013 12:30
Wohnort: Bayerland
Kontaktdaten:

Re: Probleme mit CreateImage und LoadImage. Nach 23 ist Schl

Beitrag von OlderCoder »

Der Auslöser des Fehlers ist gefunden:

Code: Alles auswählen

251 Protected Icon.SHFILEINFO,IconBr,IconHo,IconInfo.ICONINFO,ImgID,ImgHDC
252 SHGetFileInfo_(Pfad, #Null, @Icon, SizeOf(SHFILEINFO), #SHGFI_ICON|#SHGFI_USEFILEATTRIBUTES)
253 ic=Icon\hIcon   ; Herausfischen des Icon-Handles aus der Struktur
254 If GetIconInfo_(ic, @IconInfo)  ;check Icon & get IconSize: also fals es ein Icon ist
255 ;     IconBr = IconInfo\xHotspot * 2   ; Maße des Icons ermitteln, mal aufheben, kann ich vielleicht später noch brauchen
256 ;     IconHo = IconInfo\yHotspot * 2
257       ImgHDC = StartDrawing(ImageOutput(1))    ; Zeichnen auf diesem Image festlegen
258         DrawIconEx_(ImgHDC,(i-1)*(32+textflag*90)+editflag*5,(ymax-k)*32, ic, 32, 32, 0, 0, #DI_NORMAL)   ; das Icon in das Image zeichnen
259       StopDrawing()
260       DestroyIcon_(ic)
261 EndIf 
Wenn ich die Zeilen 254-261 auskommentiere, kommt der Fehler etwas später.
Wenn ich alle Zeilen 251-261 auskommentiere, dann kommt er gar nicht.
(Das Programm funktioniert dann im Prinzip trotzdem, es werden nur keine Icons angezeigt. Aber zum Testen geht es.)
In diesen Zeilen wird das Icon aus einer Datei ermittelt und dann in ein Image gezeichnet.
Aber irgendetwas stimmt hier nicht. Muss ich noch irgendetwas am Ende freigeben oder so?

Edit:
(Was ist hier den im Moment los? Jede Seite dauert über eine Minute, bis sie sich öffnet!)

In der MSDN von Microsoft steht:
"Remarks
GetIconInfo creates bitmaps for the hbmMask and hbmColor members of ICONINFO. The calling application must manage these bitmaps and delete them when they are no longer necessary."

Aber wie soll ich das tun? Das DestroyIcon() tut es jedenfalls nicht.
Wenn ich nur 254-259 auskommentiere, scheint es auch keinen Fehler zu geben.
Aber ich will ja die Icons anzeigen. Und mit Zeile 254 kommt der Fehler.
GetIconInfo liefert solange eine 1, bis der Fehler auftritt, dann nur noch 0.
OlderCoder
Beiträge: 134
Registriert: 18.03.2013 12:30
Wohnort: Bayerland
Kontaktdaten:

Re: Probleme mit CreateImage und LoadImage. Nach 23 ist Schl

Beitrag von OlderCoder »

Jetzt hab ich das Problem selbst lösen können.
Geholfen hat mir dieser Beitrag
http://foren.activevb.de/cgi-bin/foren/ ... 383929&id=

Ein bisschen angepasst, ich kannte die Syntax auch nicht.

Code: Alles auswählen

259  StopDrawing()
260  DeleteObject_(IconInfo\hbmMask)
261  DeleteObject_(IconInfo\hbmColor)
262  DestroyIcon_(ic)
Das macht genau das, was in der MSDN gefordert wird, wie oben beschrieben.
Die zwei Bitmaps werden wieder gelöscht.
Erstaunlich, was so ein Fehler für - zunächst nicht nachvollziehbare - Auswirkungen haben kann.

Ich vermute mal, jetzt funzt es ohne weitere Probleme!
Danke nochmal für Eure Hilfe!

Gruß
Oldercoder
Antworten