Don't know if this helps:
Code: Select all
Structure Double
Hi.l
Lo.l
EndStructure
Procedure MakeDouble(LONG.f, ADDRESS.l)
!FLD dword [ Esp ]
!MOV dword Eax, [ Esp + 4 ]
!FSTP qword [ Eax ]
EndProcedure
Procedure.f CatchDoubleReturn(*x.Double)
!MOV dword EAX,[ESP]
!FST qword [EAX]
!MOV dword EAX,[ESP]
!FLD qword [EAX]
EndProcedure
example of MakeDouble:
Code: Select all
Procedure.l iSEDDrawImage(Left.f, Top.f, Width.f, Height.f)
dLeft.Double
dTop.Double
dWidth.Double
dHeight.Double
MakeDouble(Left.f, @dLeft)
MakeDouble(Top.f, @dTop)
MakeDouble(Width.f, @dWidth)
MakeDouble(Height.f, @dHeight)
ProcedureReturn CallFunctionFast(FPDrawImage, dLeft\Hi, dLeft\Lo, dTop\Hi, dTop\Lo, dWidth\Hi, dWidth\Lo, dHeight\Hi, dHeight\Lo)
EndProcedure
pain in the ass, but it works great
- np