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 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.