I'm trying to use the UNICOWS.DLL under Win98SE, the DLL does open, but the Handle from BeginUpdateResource is always 0 :roll: . Here it is my code, have you any suggestion ? Thank you in advance.
Code: Select all
#RT_RCDATA=10
UseJPEGImageDecoder()
UsePNGImageDecoder()
UseTGAImageDecoder()
UseTIFFImageDecoder()
Global hUpdateRes
Global *mem0
Global NamePlug$
Global lun_res
Procedure BeginU(ver_so)
If ver_so
hUpdateRes=BeginUpdateResource_(@NamePlug$,#FALSE)
Else
hUpdateRes=CallFunction(0,"BeginUpdateResourceA",@NamePlug$,#FALSE)
PrintN(Str(hUpdateRes))
EndIf
EndProcedure
Procedure UpdateR(ver_so)
If ver_so
result=UpdateResource_(hUpdateRes,#RT_RCDATA,1,0,*mem0,lun_res)
Else
result=CallFunction(0,"UpdateResourceA",hUpdateRes,#RT_RCDATA,1,0,UseMemory(1),lun_res)
;result=CallFunction(0,"UpdateResourceA",hUpdateRes,#RT_RCDATA,1,0,*mem0,lun_res)
PrintN(Str(result))
EndIf
EndProcedure
Procedure EndU(ver_so)
If ver_so
result=EndUpdateResource_(hUpdateRes,#FALSE)
Else
result=CallFunction(0,"EndUpdateResourceA",hUpdateRes,#FALSE)
EndIf
EndProcedure
ver_so=GetVersion_() & $ff0000
If ver_so=0
res=OpenLibrary(0,"unicows.dll")
EndIf
If res
; FileName$=ProgramParameter()
; Opzione$=ProgramParameter()
; NamePlug$=ProgramParameter()
FileName$="test.bmp"
NamePlug$="gfxdll.dll"
OpenConsole()
;Print (Str(ver_so))
;r$=Input()
ImageHandle=LoadImage(0,FileName$)
If ImageHandle
larghezza=ImageWidth()
altezza=ImageHeight()
SizeOfMem=larghezza*altezza*4+9
iByte8=0
iBankPointer=9
*mem0=AllocateMemory(0,SizeOfMem,0)
PokeL(*mem0,larghezza)
PokeL(*mem0+4,altezza)
PokeB(*mem0+8,iByte8)
PrintN("")
Print("Conversion: [")
ImageDC=ImageOutput()
StartDrawing(ImageDC)
For iLoopX=0 To larghezza-1
For iLoopY=0 To altezza-1
rgb=Point(iLoopX,iLoopY)
*pointer=@rgb
red.b=PeekB(*pointer)
ver.b=PeekB(*pointer+1)
blu.b=PeekB(*pointer+2)
PokeB(*mem0+iBankPointer,blu.b)
PokeB(*mem0+iBankPointer+1,ver.b)
PokeB(*mem0+iBankPointer+2,red.b)
PokeB(*mem0+iBankPointer+3,255)
iBankPointer+4
Next
Print(".")
Next
StopDrawing()
PrintN("]")
CreateFile(1,"prova")
WriteData(*mem0,SizeOfMem)
CloseFile(1)
If Opzione$<>"/nc"
Print("Compression: [")
AllocateMemory(1,SizeOfMem+8,0)
CompressedLength=PackMemory(UseMemory(0),UseMemory(1),SizeOfMem+8)
PrintN("]")
lun_res=CompressedLength
Else
CompressedLength=0
lun_res=SizeOfMem
EndIf
BeginU(ver_so)
UpdateR(ver_so)
EndU(ver_so)
i.b=FindString(FileName$,".",0)
tmp$=Mid(FileName$,0,i.b)+"vsp"
CreateFile(0,tmp$)
WriteLong(SizeOfMem) ;scrive la lunghezza del file originale
;WriteString(FileName$)
If CompressedLength
WriteData(UseMemory(1),CompressedLength) ;scrive la parte compressa
Else
WriteData(*mem0,SizeOfMem)
EndIf
CloseFile(0)
FreeMemory(1)
FreeMemory(0)
CloseLibrary(0)
PrintN("Image has been converted successfully.")
CloseConsole()
a$=Input()
EndIf
Else
PrintN("UNICOWS.DLL not found.")
EndIf
End
The file gfxdll.dll is in the same path. Could someone try it on WinNT+ and see if it works ? Of course you must change the content of NamePlug$ string with the name of a file of yours. Thanks.