AtlAxWin [mini browser] per stream füttern ...
Verfasst: 05.04.2007 17:24
Code: Alles auswählen
#STREAM_SEEK_SET = 0
Global pp.iunknown
Procedure streamtobrowser(p1.l,p2.l)
pp\QueryInterface(?IID_IWebBrowser2, @gpbrowser.IWebBrowser2)
gpbrowser\Get_Document(@doc.IPersist)
doc\QueryInterface(?IID_IPersistStreamInit,@htmstream.IPersistStreamInit)
CreateStreamOnHGlobal_(0,#True,@stream.IStream)
stream\write(p1,p2-p1, @dwWritten.l)
Debug dwWritten
li.q
stream\Seek(li,#STREAM_SEEK_SET,0)
htmstream\InitNew()
htmstream\Load(Stream.IStream)
htmstream\Release()
stream\Release()
doc\Release()
gpbrowser\Release()
EndProcedure
AtlAxWinInit_()
OpenWindow(0,0,0,300,200,"html from stream test",#PB_Window_ScreenCentered| #PB_Window_SystemMenu)
CreateGadgetList(WindowID(0))
ButtonGadget(10, 10, 100, 285, 25, "--- switch ---")
bhandle = CreateWindowEx_(0,"AtlAxWin","about:blank",#WS_VISIBLE|#WS_CHILD|#WS_DISABLED,10,15,285,25,WindowID(0),0,GetModuleHandle_(0),0)
AtlAxGetControl_(bhandle,@pp)
streamtobrowser(?test1a,?test1e)
switch.b
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_Gadget And EventGadget() = 10
If switch = #False
streamtobrowser(?test2a,?test2e)
switch = #True
Else
streamtobrowser(?test1a,?test1e)
switch = #False
EndIf
EndIf
Until EventID = #PB_Event_CloseWindow
pp\Release()
DestroyWindow_(bhandle)
CloseWindow(0)
End
DataSection
IID_IWebBrowser2:
Data.l $D30C1661
Data.w $CDAF, $11d0
Data.b $8A, $3E, $00, $C0, $4F, $C9, $E2, $6E
IID_IPersistStreamInit:
Data.l $7FD52380
Data.w $4E07,$101B
Data.b $AE,$2D,$08,$00,$2B,$2E,$C7,$13
IID_IUnknown:
Data.l $00000000
Data.w $0000, $0000
Data.b $C0, $00, $00, $00, $00, $00, $00, $46
test1a:
Data.s "<html><head></head><body bgcolor=green text=black scroll=no leftmargin=0 topmargin=0><marquee>test1</marquee></body></html>"
test1e:
test2a:
Data.s "<html><head></head><body bgcolor=red text=black scroll=no leftmargin=0 topmargin=0><b><marquee>test2</marquee></b></body></html>"
test2e:
EndDataSection
aber die darstellungs-möglichkeiten mit html + javascript sind ja vielfältig
