Seite 1 von 1

AtlAxWin [mini browser] per stream füttern ...

Verfasst: 05.04.2007 17:24
von bingo

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
"AtlAxWin" per "res://meine.exe..." zu laden ist bekannt . mit diesem beispiel wird demonstriert , wie man AtlAxWin aus streams immer neu füttern kann . man kann auch verschiedene html per IncludeBinary "einlagern" ! gegenüber der "res://" variante kann man hier allerdings nur pures html übergeben ...

aber die darstellungs-möglichkeiten mit html + javascript sind ja vielfältig 8)