Basic Univers
Interface IShockwaveFlash Extends IDispatch
get_ReadyState(a)
get_TotalFrames(a)
get_Playing(a)
put_Playing(a)
get_Quality(a)
put_Quality(a)
get_ScaleMode(a)
put_ScaleMode(a)
get_AlignMode(a)
put_AlignMode(a)
get_BackgroundColor(a)
put_BackgroundColor(a)
get_Loop(a)
put_Loop(a)
get_Movie(a)
put_Movie(a)
get_FrameNum(a)
put_FrameNum(a)
SetZoomRect(a, b, c, d)
Zoom(a)
Pan(a, b, c)
Play()
Stop()
Back()
Forward()
Rewind()
StopPlay()
GotoFrame(a)
CurrentFrame(a)
IsPlaying(a)
PercentLoaded(a)
FrameLoaded(a, b)
FlashVersion(a)
get_WMode(a)
put_WMode(a)
get_SAlign(a)
put_SAlign(a)
get_Menu(a)
put_Menu(a)
get_Base(a)
put_Base(a)
get_scale(a)
put_scale(a)
get_DeviceFont(a)
put_DeviceFont(a)
get_EmbedMovie(a)
put_EmbedMovie(a)
get_BGColor(a)
put_BGColor(a)
get_Quality2(a)
put_Quality2(a)
LoadMovie(a, b.p - bstr)
TGotoFrame(a, b)
TGotoLabel(a, b)
TCurrentFrame(a, b)
TCurrentLabel(a, b)
TPlay(a)
TStopPlay(a)
SetVariable(a, b.p - bstr)
GetVariable(a, b.p - bstr)
TSetProperty(a, b, c)
TGetProperty(a, b, c)
TCallFrame(a, b)
TCallLabel(a, b)
TSetPropertyNum(a, b, c)
TGetPropertyNum(a, b, c)
get_SWRemote(a)
put_SWRemote(a)
get_Stacking(a)
put_Stacking(a)
EndInterface
Prototype AtlAxWinInit()
Prototype AtlAxCreateControl(a.p - bstr, b.l, c.l, d.l)
Prototype AtlAxGetControl(a.l, b.l)
Procedure.l FlashLoadFromData(SwfStart.l, SwfEnd.l, *FlashObject.IShockwaveFlash)
FlashBuffer = AllocateMemory(SwfEnd - SwfStart + 8)
If FlashBuffer
PokeL(FlashBuffer, $55665566)
PokeL(FlashBuffer + 4, SwfEnd - SwfStart)
CopyMemory(SwfStart, FlashBuffer + 8, SwfEnd - SwfStart)
If CreateStreamOnHGlobal_(FlashBuffer, #True, @FlashStream.IStream)= 0
*FlashObject\QueryInterface(?IID_IPersistStreamInit, @FlashPSI.IPersistStreamInit)
If FlashPSI
If FlashPSI\load(FlashStream)= 0
ReturnValue = 1
EndIf
FlashPSI\Release()
EndIf
FlashStream\Release()
EndIf
FreeMemory(FlashBuffer)
EndIf
ProcedureReturn ReturnValue
EndProcedure
If OpenLibrary(0, "atl.dll")
AtlAxWinInit.AtlAxWinInit = GetFunction(0, "AtlAxWinInit")
AtlAxCreateControl.AtlAxCreateControl = GetFunction(0, "AtlAxCreateControl")
AtlAxGetControl.AtlAxGetControl = GetFunction(0, "AtlAxGetControl")
Else
MessageRequester("Erreur", "Impossible d'executer une fonction necessaire a ce programme !")
End
EndIf
Movie$ = "Prince of persia.swf"
CoInitialize_(0)
If OpenWindow(0, 100, 100, 450, 350, "Lecteur Flash : " + Movie$, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_ScreenCentered | #PB_Window_WindowCentered) And CreateGadgetList(WindowID(0))
ContainerGadget(0, 0, 0, 0, 0, #PB_Container_BorderLess)
CloseGadgetList()
If AtlAxWinInit()
AtlAxCreateControl("ShockwaveFlash.ShockwaveFlash", GadgetID(0), 0, @Container.IUnknown)
If Container
AtlAxGetControl(GadgetID(0), @oFlash.IShockwaveFlash)
If oFlash
If oFlash\QueryInterface(?IID_ShockwaveFlash, @oFlash) = 0
FlashLoadFromData(?FlashFileStart, ?FlashFileEnd, oFlash)
oFlash\get_ReadyState(@state)
Select state
Case 4 , 3
oFlash\FlashVersion(@Version)
oFlash\get_BackgroundColor(@BackColor)
Default
MessageRequester("Erreur", "Impossible de charger la video !")
EndSelect
oFlash\put_Quality(0)
Repeat
Select WaitWindowEvent(50)
Case #PB_Event_CloseWindow
Break
Case #PB_Event_SizeWindow
ResizeGadget(0, #PB_Ignore, #PB_Ignore, WindowWidth(0), WindowHeight(0))
Case #PB_Event_Gadget
EndSelect
oFlash\CurrentFrame(@frame)
ForEver
oFlash\Release()
EndIf
oFlash\Release()
EndIf
EndIf
EndIf
CloseWindow(0)
EndIf
CoUninitialize_()
End
DataSection
IID_ShockwaveFlash: Data.q $11CFAE6DD27CDB6C, $000054534544B896
IID_IPersistStreamInit:
Data.l $7FD52380
Data.w $4E07, $101B
Data.b $AE, $2D, $08, $00, $2B, $2E, $C7, $13
FlashFileStart:
IncludeBinary "Prince of persia.swf"
FlashFileEnd:
EndDataSection