Code: Select all
;
; Embedded flash player example (ActiveX)
;
; By AlphaSND
;
; Flash ActiveX interface definition
;
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)
If OpenLibrary(0,"atl.dll")
AtlAxWinInit.AtlAxWinInit = GetFunction(0, "AtlAxWinInit")
AtlAxCreateControl.AtlAxCreateControl = GetFunction(0, "AtlAxCreateControl")
AtlAxGetControl.AtlAxGetControl = GetFunction(0, "AtlAxGetControl")
Else
MessageRequester("Error", "OpenLibrary() failed.")
End
EndIf
Movie$ = "c:\clock.swf"
Movie$ = "c:\\WINDOWS\\Help\\Tours\\mmTour\\segment1.swf"
CoInitialize_(0)
If OpenWindow(0, 100, 100, 300, 315, "")
CreateGadgetList(WindowID(0))
ContainerGadget(0, 0, 0, 300, 275) ; This will be our container window, where the ActiveX will be rendered
CloseGadgetList()
ButtonGadget(1, 10, 285, 70, 25, "Play", #PB_Button_Toggle)
;ButtonGadget(2, 90, 285, 70, 25, "Play")
If AtlAxWinInit()
AtlAxCreateControl("ShockwaveFlash.ShockwaveFlash", GadgetID(0), 0, @Container.IUnknown) ; It always create the IE control even if flash isn't found
If Container
AtlAxGetControl(GadgetID(0),@oFlash.IShockwaveFlash)
If oFlash
If oFlash\QueryInterface(?IID_ShockwaveFlash, @oFlash) = 0 ; Be sure it's a flash object in the IE container
oFlash\LoadMovie(0, Movie$)
oFlash\get_ReadyState(@State) ; Seems to return 4 when the movie is ready to play, 3 else.
Select State
Case 4
;oFlash\Play()
oFlash\FlashVersion(@Version)
Debug "Flash Version: " + Hex(Version)
oFlash\put_BackgroundColor($000000)
oFlash\get_BackgroundColor(@BackColor)
Debug "BackColor: " + Hex(BackColor)
Default
Debug State
MessageRequester("Error", "The movie can't be loaded ("+Movie$+")")
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)-35)
ResizeGadget(1, #PB_Ignore, WindowHeight(0)-30, #PB_Ignore, #PB_Ignore)
;ResizeGadget(2, #PB_Ignore, WindowHeight(0)-30, #PB_Ignore, #PB_Ignore)
Case #PB_Event_Gadget
Select EventGadget()
Case 1
Select GetGadgetState(1)
Case 0 : oFlash\Stop()
Case 1 : oFlash\Play()
EndSelect
EndSelect
EndSelect
oFlash\CurrentFrame(@frame)
SetWindowTitle(0, "Frame " + Str(frame))
ForEver
oFlash\Release()
EndIf
oFlash\Release()
EndIf
EndIf
EndIf
CloseWindow(0) ; Don't forget this one, else the program will crash
EndIf
CoUninitialize_()
End
DataSection
IID_ShockwaveFlash: Data.q $11CFAE6DD27CDB6C,$000054534544B896
EndDataSection