CreateResourceFromIcon
Verfasst: 02.04.2006 02:23
PB3.94 Code - Der Code ist fehlerhaft! Hab ich aber der Vollständigkeit und des Verständnis halber drin gelassen. Für mehr Infos einfach die anderen beiträge lesen

Code: Alles auswählen
Procedure CreateResourceFromIcon(IconFile.s,ResFile.s)
Protected Res_Type,Res_Name,MemoryFlags,LanguageID,Version,HeaderSize,F_ICO,*Mem,ResDataSize,Offset,F_RES
Enumeration
#Res_String = 0
#Res_Cursor = 1
#Res_Bitmap
#Res_Icon
#Res_Menu
#Res_Dialog
#Res_StringTable
#Res_FontDirectory
#Res_Font
#Res_AcceleratorsTable
#Res_RCData
#Res_Messagetable
#Res_GroupCursor
#Res_GroupIcon = $E
#Res_VersionInformation = $10
#Res_DialogInclude
#Res_PlugnPlay = $13
#Res_VXD
#Res_AnimatedCursor
#Res_newBitmap = $2002
#Res_newMenu = $2004
#Res_newDialog
EndEnumeration
Res_Type = #Res_Icon
Res_Name = 1
MemoryFlags = 0
LanguageID = 0
Version = 0
HeaderSize = 4+4+4+4+2+2+4+4
F_ICO = ReadFile(#PB_Any,IconFile)
If F_ICO
*mem = AllocateMemory(Lof())
FileSeek($0E)
ResDataSize = ReadLong()
Offset = ReadLong()
FileSeek(0)
ReadData(*mem,Lof())
CloseFile(F_ICO)
Else
ProcedureReturn #False
EndIf
F_RES = CreateFile(#PB_Any,ResFile)
If F_RES
WriteData(?EmptyResource,?EmptyResourceEnd-?EmptyResource)
WriteLong(ResDataSize)
WriteLong(HeaderSize)
WriteWord($FFFF)
WriteWord(Res_Type)
WriteWord($FFFF)
WriteWord(Res_Name)
WriteWord(MemoryFlags)
WriteWord(LanguageID)
WriteLong(Version)
WriteLong(0)
WriteLong(0)
WriteData(*mem+Offset,ResDataSize)
WriteLong($14)
WriteLong($20)
WriteWord($FFFF)
WriteWord(#Res_GroupIcon)
WriteWord($FFFF)
WriteWord($50)
WriteWord(0)
WriteWord(0)
WriteLong(0)
WriteLong(0)
WriteLong(0)
WriteData(*mem,$14)
;WriteData(?EndResourceContent,?EndResourceEnd-?EndResourceContent)
CloseFile(F_RES)
Else
ProcedureReturn #False
EndIf
ProcedureReturn #True
DataSection
EmptyResource:
Data.b $00,$00,$00,$00,$20,$00,$00,$00,$FF,$FF,$00,$00,$FF,$FF,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
EmptyResourceEnd:
EndResourceContent:
Data.b $00,$00,$01,$00,$01,$00,$20,$20,$10,$00,$01,$00,$04,$00,$E8,$02,$00,$00,$01,$00
EndResourceEnd:
EndDataSection
EndProcedure