| |
|
|
Jörg Sellmeyer | Hier ist ein Code, mit dem man die Anzahl der Icongrößen in einer ico-Datei ermitteln kann. Außerdem werden die Formate ausgegeben und die jeweiligen Icons extrahiert und auf einem Button ausgegeben. Ein dazugehöriges Icon:
Herunterladen
$H windows.ph
Proc IconGetFormat
Parameters Icon$
Var Datei& = Assign(Icon$)
Case FileSize(Icon$) < 10:Return 0
OpenRW Datei&
Seek Datei&,2
Var Typ% = GetByte(Datei&)
Close Datei&
Return Typ%
EndProc
Proc IconFormatCount
Parameters Icon$
Case FileSize(Icon$) < 10:Return 0
Var Datei& = Assign(Icon$)
OpenRW Datei&
Seek Datei&,4
Var Anzahl% = GetByte(Datei&)
Close Datei&
Return Anzahl%
EndProc
Proc IconGetSize
Parameters Icon$,Index%
Var Datei& = Assign(Icon$)
OpenRW Datei&
Seek Datei&,6 + Index% * 16
Var Size%[] = GetByte(Datei&),GetByte(Datei&)
If Size%[0] = 0
Clear Size%[]
Seek Datei&,FilePos(Datei&)+1
Size%[0] = GetWord(Datei&)
Size%[1] = Size%[0]
EndIf
Close Datei&
Return Size%[]
EndProc
Window 500,800
Declare Icon&,Icons&[],Anzahl%,size%,y%,size%[]
Var Ico$ ="PRF-File.ico"
Print Ico$
Print "Typ = ";IconGetFormat(ico$),"(1 = Icon, 2 = Cursor, 0 = Unbekannt)"
Print "Anzahl = ";IconFormatCount(ico$)
WhileLoop 0,IconFormatCount(ico$)-1
size%[] = IconGetSize(ico$,&Loop)
Icons&[&Loop] = size%[0]
Print "Icon",&Loop+1, "=", size%[0] ,"x", size%[1]
Wend
size% = 16
y% = 40
WhileLoop 0,SizeOf(Icons&[])-1
Size% = Icons&[&Loop]
Icon& = ~LoadImage(0,ico$,~IMAGE_ICON,size%,size%,~LR_LOADFROMFILE)
Inc Anzahl%
Icons&[&Loop] = Icon&
Create("IconButton",%hwnd,Icon&,160,y%,Size% + 10,Size% + 10)
Inc y%, size% + 20
Inc size%,2
Wend
Waitinput
WhileLoop 0,SizeOf(Icons&[])-1
DeleteObject Icons&[&Loop]
Wend
End
ICONDIRENTRY
|
|
|
| |
|
|