290 likes | 492 Views
IE 4.0 Shell Architecture. Satoshi Nakajima. IE 4.0. 8 Nov., 1996. IE 4.0 Technology Exchange Meeting. Topic. Scope of this presentation. Covered in this presentation Browser, Shell Explorer, WebBar, Asynchronos Navigation, UI negotiation Not covered
E N D
IE 4.0 Shell Architecture Satoshi Nakajima IE 4.0 8 Nov., 1996 IE 4.0 Technology Exchange Meeting
Topic Scope of this presentation • Covered in this presentation Browser, Shell Explorer, WebBar, Asynchronos Navigation, UI negotiation • Not covered WebView, Automation Model, Desktop News
Topic Browser Evolution • How Win95 Explorer works Shell Namespace, IShellFolder, pidl, IShellView, IShellBrowser • How IE 3.0 browser works DocObject • How IE 4.0 browser works WebBar
Topic Advanced topics • Layout negotiation • How asynchronous navigation works
WIN95 Shell Name Space • Shell NameSpace Hierarchical name space, which the user can browse with the Shell Explorer • Shell Items Items in the shell name space -- drives, files, directories, servers, shares, MyComputer, ControlPanel, ControlPanel items, Printer Folder, Printers.
WIN95 IShellFolder IShellFolder Explorer Shell Folder IShellFolder allows you to • Enumerate items in it (returns pidls) • Parse display name (name to pidl) • Get display name (pidl to name) • Bind to an item • Get UI objects (menu, drop target, …)
WIN95 What is a “pidl”? An identifier of an item in the shell name space. SHITEMID cb opaque bits PIDL SHITEMID1 SHITEMID2 0 A pidl to “C:\tmp\foo.htm” cb1 MyComputer cb2 C:\ cb3 tmp cb4 Foo.htm 0 Remember that pidls are opaque!
WIN95 Binding to IShellFolder SHGetDesktopFolder IShellFolder Desktop ISF::BindToObject cb1 MyComputer 0 IShellFolder MyComputer ISF::BindToObject cb2 C:\ cb3 tmp 0 IShellFolder C:\tmp
WIN95 IShellBrowser / IShellView Explorer IShellFolder C:\tmp (folder) IShellBrowser ISF::CreateViewObject IShellView C:\tmp (view)
WIN95 IShellBrowser It allows the shell view to • Merge Menus • Add Toolbar buttons • Put some status text • Translate accelerators Not OLE’s In-place UI negotiation!
WIN95 DefView A default implementation of IShellView on top of IShellFolder. IShellFolder IShellView C:\tmp (folder) ISF::CreateViewObject DefView SHCreateShellFolderView(psf)
WIN95 Extended Name Space ISVs can plug-in their own hierarchical name space IShellFolder Explorer Desktop MyComputer NetHood MSN Athena Zip Folder
IE 3.0 Internet Explorer 3.0 CShellBrowser IShellFolder Http://msw IShellBrowser ISF::CreateViewObject IShellView C:\tmp Wedge IOleDocumentSite IOleDocument HTMLObj Word/Excel
IE 3.0 CShellBrowser CShellBrowser is a mini-Explorer CBaseBrowser subclass IDispatch IWebBrowserApp IHlinkFrame ITargetFrame CShellBrowser IShellBrowser IOleCommandTarget IOleContainer IOleInPlaceUIWindow
IE 3.0 “Wedge” IShellView IOleCommandTarget CShellDocView CDocObjectHost IOleDocumentSite IOleSite IOleInPlaceSite IOleCommandTarget IServiceProvider
IE 3.0 WebBrowserOC IOleObject IViewObject2 IPersistSreamInit IOleControl IWebBrowser etc. CWebBrowserOC CBaseBrowser subclass CWebBrowserSB IShellBrowser IOleCommandTarget IOleContainer IOleInPlaceUIWindow
IE 3.0 Frame Set CShellBrowser IShellBrowser IShellView Wedge IOleDocumentSite IOleDocument HTLMObj Site Site IOleClientSite IOleObject CWebBrowserOC CWebBrowserOC CWebBrowserSB CWebBrowserSB IShellBrowser IShellView Wedge Wedge IOleDocumentSite IOleDocument HTMLObj HTMLObj
IE 4.0 IE 4.0 Explorer IE 4.0 Explorer, Folder and Desktop are based on IE 3.0 browser code. CBaseBrowser subclass CWebBrowserOC subclass CShellBrowser subclass CWebBrowserSB CDesktopBrowser CExplorerBrwsr
IE 4.0 WebBar WebBar is a dockable browser, which can be docked on a browser or the desktop subclass CBaseBrowser CShellBrowser IDockingWindowSite CDesktopBrwsr IDockingWindow CWebBar OCHost WebBrowserOC
IE 4.0 Layout Negotiation
IE 4.0 Effective Client Area Internet toolbar takes this border space Effective Client Area CBaseBrowser::_GetEffectiveClientArea IDockingWindowSite::GetBorderDW for the internet toolbar returns this rectangle.
IE 4.0 ISTBS::GetBorderST IDockingWindowSite::GetBorderDW for the scope pane returns this rectangle. The scope pane takes the border space from left and top.
IE 4.0 Shell View Rectangle Excel’s formular bar CBaseBrowser::_GetViewRect IOleInPlaceUIWindow::GetBorder returns this rectangle.
IE 4.0 Shell View Window Rectangle CBaseBrowser::_GetViewWindowRect IOleDocumentView::SetRect will be called with this rectangle.
IE 4.0 Asynchronous Navigation 1 CShellBrowser _psvPending _psv 2 Wedge2 Wedge1 3 URL moniker HTLMView1 1. IHlinkFrame::Navigate called 2. Create a new Wedge (Wedge2) 3. Create URL moniker and call BindToObject (Note that HTMLView1 remains UIActive)
IE 4.0 Asynchronous Navigation CShellBrowser _psv _psvPending 6 HTLMView2 Wedge2 Wedge1 5 URL moniker 4 HTLMView1 4. Moniker sends a HTTP request to the server 5. Server responds 6. Moniker create another HTML view (Note that HTMLView1 is still UIActive)
IE 4.0 Asynchronous Navigation CShellBrowser _psvPending _psv 9 Wedge2 Wedge1 8 7 URL moniker HTLMView2 HTLMView1 7. Moniker calls Wedge’s OnObjectAvailable 8. Wedge2 gets the pointer to HTML view 9. Wedge2 notifies it to the browser (Note that HTMLView1 is still UIActive)
IE 4.0 Asynchronous Navigation CShellBrowser 11 _psv 10 Wedge2 12 Wedge1 HTLMView2 10. Deactivate and release the current view 11. Activate the Wedge2 12. UIActivate HTMLView2 HTLMView1
IE 4.0 More Information • http://ohserv/users/satona • nt\private\shell\docs (\\trango\slmadd) SHIP IT! Robustness Performance Bug fixes