basesb.h
Upload User: xhy777
Upload Date: 2007-02-14
Package Size: 24088k
Code Size: 28k
Category:

Windows Kernel

Development Platform:

Visual C++

  1. #ifndef _BASESB2_H
  2. #define _BASESB2_H
  3. #include "iface.h"
  4. #include "trsite.h"
  5. #include "track.h"
  6. #include "fldset.h"
  7. #include <vervec.h>
  8. #include <iethread.h>
  9. #include "browsext.h"
  10. //
  11. //  this is used to identify the top frame browsers dwBrowserIndex
  12. #define BID_TOPFRAMEBROWSER   ((DWORD)-1)
  13. void IECleanUpAutomationObject(void);
  14. #define CBASEBROWSER CBaseBrowser2
  15. class CBaseBrowser2 : public CAggregatedUnknown 
  16.                    , public IShellBrowser
  17.                    , public IBrowserService2
  18.                    , public IServiceProvider
  19.                    , public IOleCommandTarget
  20.                    , public IOleContainer
  21. #ifdef LIGHT_FRAMES
  22.                    , public IOleInPlaceFrame
  23. #else
  24.                    , public IOleInPlaceUIWindow
  25. #endif
  26.                    , public IAdviseSink
  27.                    , public IDropTarget
  28.                    , public IInputObjectSite
  29.                    , public IDocNavigate
  30.                    , public IPersistHistory
  31.                    , public IInternetSecurityMgrSite
  32.                    , public IVersionHost
  33. #ifdef LIGHT_FRAMES
  34.                    , public IOleClientSite
  35.                    , public IOleInPlaceSite
  36. #endif
  37. {
  38. public:
  39.     // IUnknown
  40.     virtual STDMETHODIMP QueryInterface(REFIID riid, LPVOID * ppvObj) {return CAggregatedUnknown::QueryInterface(riid, ppvObj);};
  41.     virtual STDMETHODIMP_(ULONG) AddRef(void) { return CAggregatedUnknown::AddRef();};
  42.     virtual STDMETHODIMP_(ULONG) Release(void) { return CAggregatedUnknown::Release();};
  43.     // IOleWindow
  44.     virtual STDMETHODIMP GetWindow(HWND * lphwnd);
  45.     virtual STDMETHODIMP ContextSensitiveHelp(BOOL fEnterMode);
  46.                                                                         
  47.     // IShellBrowser (same as IOleInPlaceFrame)
  48.     virtual STDMETHODIMP InsertMenusSB(HMENU hmenuShared, LPOLEMENUGROUPWIDTHS lpMenuWidths);
  49.     virtual STDMETHODIMP SetMenuSB(HMENU hmenuShared, HOLEMENU holemenu, HWND hwnd);
  50.     virtual STDMETHODIMP RemoveMenusSB(HMENU hmenuShared);
  51.     virtual STDMETHODIMP SetStatusTextSB(LPCOLESTR lpszStatusText);
  52.     virtual STDMETHODIMP EnableModelessSB(BOOL fEnable);
  53.     virtual STDMETHODIMP TranslateAcceleratorSB(LPMSG lpmsg, WORD wID);
  54.     virtual STDMETHODIMP BrowseObject(LPCITEMIDLIST pidl, UINT wFlags);
  55.     virtual STDMETHODIMP GetViewStateStream(DWORD grfMode, LPSTREAM  *ppStrm) {return E_NOTIMPL; };
  56.     virtual STDMETHODIMP GetControlWindow(UINT id, HWND * lphwnd);
  57.     virtual STDMETHODIMP SendControlMsg(UINT id, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *pret);
  58.     virtual STDMETHODIMP QueryActiveShellView(struct IShellView ** ppshv);
  59.     virtual STDMETHODIMP OnViewWindowActive(struct IShellView * ppshv);
  60.     virtual STDMETHODIMP SetToolbarItems(LPTBBUTTON lpButtons, UINT nButtons, UINT uFlags);
  61.     // IOleInPlaceUIWindow (also IOleWindow)
  62.     virtual STDMETHODIMP GetBorder(LPRECT lprectBorder);
  63.     virtual STDMETHODIMP RequestBorderSpace(LPCBORDERWIDTHS pborderwidths);
  64.     virtual STDMETHODIMP SetBorderSpace(LPCBORDERWIDTHS pborderwidths);
  65.     virtual STDMETHODIMP SetActiveObject(IOleInPlaceActiveObject *pActiveObject, LPCOLESTR pszObjName);
  66.     // IOleCommandTarget
  67.     virtual STDMETHODIMP QueryStatus(const GUID *pguidCmdGroup, ULONG cCmds, OLECMD rgCmds[], OLECMDTEXT *pcmdtext);
  68.     virtual STDMETHODIMP Exec(const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANTARG *pvarargIn, VARIANTARG *pvarargOut);
  69.     // IOleContainer
  70.     virtual STDMETHODIMP ParseDisplayName(IBindCtx  *pbc, LPOLESTR pszDisplayName, ULONG  *pchEaten, IMoniker  **ppmkOut);
  71.     virtual STDMETHODIMP EnumObjects(DWORD grfFlags, IEnumUnknown **ppenum);
  72.     virtual STDMETHODIMP LockContainer( BOOL fLock);
  73.     // IBrowserService
  74.     virtual STDMETHODIMP GetParentSite(struct IOleInPlaceSite** ppipsite);
  75.     virtual STDMETHODIMP SetTitle(IShellView *psv, LPCWSTR pszName);
  76.     virtual STDMETHODIMP GetTitle(IShellView *psv, LPWSTR pszName, DWORD cchName);
  77.     virtual STDMETHODIMP GetOleObject(struct IOleObject** ppobjv);
  78.     virtual STDMETHODIMP GetTravelLog(ITravelLog **pptl);
  79.     virtual STDMETHODIMP ShowControlWindow(UINT id, BOOL fShow);
  80.     virtual STDMETHODIMP IsControlWindowShown(UINT id, BOOL *pfShown);
  81.     virtual STDMETHODIMP IEGetDisplayName(LPCITEMIDLIST pidl, LPWSTR pwszName, UINT uFlags);
  82.     virtual STDMETHODIMP IEParseDisplayName(UINT uiCP, LPCWSTR pwszPath, LPITEMIDLIST * ppidlOut);
  83.     virtual STDMETHODIMP DisplayParseError(HRESULT hres, LPCWSTR pwszPath);
  84.     virtual STDMETHODIMP NavigateToPidl(LPCITEMIDLIST pidl, DWORD grfHLNF);
  85.     virtual STDMETHODIMP SetNavigateState(BNSTATE bnstate);
  86.     virtual STDMETHODIMP GetNavigateState(BNSTATE *pbnstate);
  87.     virtual STDMETHODIMP UpdateWindowList(void);
  88.     virtual STDMETHODIMP UpdateBackForwardState(void);
  89.     virtual STDMETHODIMP NotifyRedirect(IShellView* psv, LPCITEMIDLIST pidl, BOOL *pfDidBrowse);
  90.     virtual STDMETHODIMP SetFlags(DWORD dwFlags, DWORD dwFlagMask);
  91.     virtual STDMETHODIMP GetFlags(DWORD *pdwFlags);
  92.     virtual STDMETHODIMP CanNavigateNow(void);
  93.     virtual STDMETHODIMP GetPidl(LPITEMIDLIST *ppidl);
  94.     virtual STDMETHODIMP SetReferrer(LPITEMIDLIST pidl);
  95.     virtual STDMETHODIMP_(DWORD) GetBrowserIndex(void);
  96.     virtual STDMETHODIMP GetBrowserByIndex(DWORD dwID, IUnknown **ppunk);
  97.     virtual STDMETHODIMP GetHistoryObject(IOleObject **ppole, IStream **ppstm, IBindCtx **ppbc);
  98.     virtual STDMETHODIMP SetHistoryObject(IOleObject *pole, BOOL fIsLocalAnchor);
  99.     virtual STDMETHODIMP CacheOLEServer(IOleObject *pole);
  100.     virtual STDMETHODIMP GetSetCodePage(VARIANT* pvarIn, VARIANT* pvarOut);
  101.     virtual STDMETHODIMP OnHttpEquiv(IShellView* psv, BOOL fDone, VARIANT *pvarargIn, VARIANT *pvarargOut);
  102.     virtual STDMETHODIMP GetPalette( HPALETTE * hpal );
  103.     virtual STDMETHODIMP RegisterWindow(BOOL fUnregister, int swc) {return E_NOTIMPL;}
  104.     virtual STDMETHODIMP_(LRESULT) WndProcBS(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
  105.     virtual STDMETHODIMP OnSize(WPARAM wParam);
  106.     virtual STDMETHODIMP OnCreate(LPCREATESTRUCT pcs);
  107.     virtual STDMETHODIMP_(LRESULT) OnCommand(WPARAM wParam, LPARAM lParam);
  108.     virtual STDMETHODIMP OnDestroy();
  109.     virtual STDMETHODIMP ReleaseShellView();
  110.     virtual STDMETHODIMP ActivatePendingView();
  111.     virtual STDMETHODIMP_(LRESULT) OnNotify(NMHDR * pnm);
  112.     virtual STDMETHODIMP OnSetFocus();
  113.     virtual STDMETHODIMP OnFrameWindowActivateBS(BOOL fActive);
  114.     virtual STDMETHODIMP SetTopBrowser();
  115.     virtual STDMETHODIMP UpdateSecureLockIcon(int eSecureLock);
  116.     virtual STDMETHODIMP Offline(int iCmd);
  117.     virtual STDMETHODIMP SetActivateState(UINT uActivate) { _bbd._uActivateState = uActivate; return S_OK;};
  118.     virtual STDMETHODIMP AllowViewResize(BOOL f) { HRESULT hres = _fDontResizeView ? S_FALSE : S_OK; _fDontResizeView = !BOOLIFY(f); return hres;};
  119.     virtual STDMETHODIMP InitializeDownloadManager();
  120.     virtual STDMETHODIMP InitializeTransitionSite();
  121.     virtual STDMETHODIMP CreateViewWindow(IShellView* psvNew, IShellView* psvOld, LPRECT prcView, HWND* phwnd);
  122.     virtual STDMETHODIMP GetFolderSetData(struct tagFolderSetData*) { ASSERT(0); return E_NOTIMPL;};
  123.     virtual STDMETHODIMP CreateBrowserPropSheetExt(REFIID, LPVOID *) { ASSERT(0); return E_NOTIMPL;};
  124.     virtual STDMETHODIMP GetBaseBrowserData( LPCBASEBROWSERDATA* ppbd ) { *ppbd = &_bbd; return S_OK; };
  125.     virtual STDMETHODIMP_(LPBASEBROWSERDATA) PutBaseBrowserData() { return &_bbd; };
  126.     virtual STDMETHODIMP SetAsDefFolderSettings() { TraceMsg(TF_ERROR, "CBaseBrowser2::SetAsDefFolderSettings called, returned E_NOTIMPL"); return E_NOTIMPL;};
  127.     virtual STDMETHODIMP GetViewRect(RECT* prc);
  128.     virtual STDMETHODIMP GetViewWindow(HWND * phwndView);
  129.     virtual STDMETHODIMP InitializeTravelLog(ITravelLog* ptl, DWORD dw);
  130.     virtual STDMETHODIMP _Initialize(HWND hwnd, IUnknown *pauto);
  131. #if 1 // BUGBUG split: temporary
  132.     virtual STDMETHODIMP_(UINT) _get_itbLastFocus() { ASSERT(0); return ITB_VIEW; };
  133.     virtual STDMETHODIMP _put_itbLastFocus(UINT itbLastFocus) { ASSERT(0); return E_NOTIMPL; };
  134. #endif
  135.     // see _UIActivateView, below
  136.     
  137.     // BEGIN REVIEW:  review names and need of each.  
  138.     // 
  139.     // this first set could be basebrowser only members.  no one overrides
  140.     virtual STDMETHODIMP _CancelPendingNavigationAsync() ;
  141.     virtual STDMETHODIMP _CancelPendingView() ;
  142.     virtual STDMETHODIMP _MaySaveChanges() ; 
  143.     virtual STDMETHODIMP _PauseOrResumeView( BOOL fPaused) ;
  144.     virtual STDMETHODIMP _DisableModeless() ;
  145.     
  146.     // rethink these... are all of these necessary?
  147.     virtual STDMETHODIMP _NavigateToPidl( LPCITEMIDLIST pidl, DWORD grfHLNF, DWORD dwFlags);
  148.     virtual STDMETHODIMP _TryShell2Rename( IShellView* psv, LPCITEMIDLIST pidlNew);
  149.     virtual STDMETHODIMP _SwitchActivationNow( );
  150.     
  151.     // this belongs with the toolbar set.
  152.     virtual STDMETHODIMP _ExecChildren(IUnknown *punkBar, BOOL fBroadcast,
  153.                               const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt,
  154.                               VARIANTARG *pvarargIn, VARIANTARG *pvarargOut);
  155.     virtual STDMETHODIMP _SendChildren(HWND hwndBar, BOOL fBroadcast,
  156.         UINT uMsg, WPARAM wParam, LPARAM lParam);
  157.     virtual STDMETHODIMP _GetViewBorderRect(RECT* prc);
  158.     virtual STDMETHODIMP _UpdateViewRectSize();
  159.     virtual STDMETHODIMP _ResizeNextBorder(UINT itb);
  160.     virtual STDMETHODIMP _ResizeView();
  161.     // Notes: Only CDesktopBrowser may sublcass this.
  162.     virtual STDMETHODIMP _GetEffectiveClientArea(LPRECT lprectBorder, HMONITOR hmon);
  163.     //END REVIEW:
  164.     // CDesktopBrowser accesses CCommonBrowser implementations of these:
  165.     virtual STDMETHODIMP_(IStream*) v_GetViewStream(LPCITEMIDLIST pidl, DWORD grfMode, LPCWSTR pwszName) { ASSERT(FALSE); return NULL; }
  166.     virtual STDMETHODIMP_(LRESULT) ForwardViewMsg(UINT uMsg, WPARAM wParam, LPARAM lParam) { ASSERT(FALSE); return 0; }
  167.     virtual STDMETHODIMP SetAcceleratorMenu(HACCEL hacc) { ASSERT(FALSE); return E_NOTIMPL; }
  168.     virtual STDMETHODIMP_(int) _GetToolbarCount(THIS) { ASSERT(FALSE); return 0; }
  169.     virtual STDMETHODIMP_(LPTOOLBARITEM) _GetToolbarItem(THIS_ int itb) { ASSERT(FALSE); return NULL; }
  170.     virtual STDMETHODIMP _SaveToolbars(IStream* pstm) { ASSERT(FALSE); return E_NOTIMPL; }
  171.     virtual STDMETHODIMP _LoadToolbars(IStream* pstm) { ASSERT(FALSE); return E_NOTIMPL; }
  172.     virtual STDMETHODIMP _CloseAndReleaseToolbars(BOOL fClose) { ASSERT(FALSE); return E_NOTIMPL; }
  173.     virtual STDMETHODIMP v_MayGetNextToolbarFocus(LPMSG lpMsg, UINT itbNext, int citb, LPTOOLBARITEM * pptbi, HWND * phwnd) { ASSERT(FALSE); return E_NOTIMPL; };
  174.     virtual STDMETHODIMP _ResizeNextBorderHelper(UINT itb, BOOL bUseHmonitor) { ASSERT(FALSE); return E_NOTIMPL; }
  175.     virtual STDMETHODIMP_(UINT) _FindTBar(IUnknown* punkSrc) { ASSERT(FALSE); return (UINT)-1; };
  176.     virtual STDMETHODIMP _SetFocus(LPTOOLBARITEM ptbi, HWND hwnd, LPMSG lpMsg) { ASSERT(FALSE); return E_NOTIMPL; }
  177.     virtual STDMETHODIMP v_MayTranslateAccelerator(MSG* pmsg) { ASSERT(FALSE); return E_NOTIMPL; }
  178.     virtual STDMETHODIMP _GetBorderDWHelper(IUnknown* punkSrc, LPRECT lprectBorder, BOOL bUseHmonitor) { ASSERT(FALSE); return E_NOTIMPL; }
  179.     // CShellBrowser overrides this.
  180.     virtual STDMETHODIMP v_CheckZoneCrossing(LPCITEMIDLIST pidl) {return S_OK;};
  181.     // IServiceProvider
  182.     virtual STDMETHODIMP QueryService(REFGUID guidService, REFIID riid, LPVOID* ppvObj);
  183.     // IAdviseSink
  184.     virtual STDMETHODIMP_(void) OnDataChange(FORMATETC *, STGMEDIUM *);
  185.     virtual STDMETHODIMP_(void) OnViewChange(DWORD dwAspect, LONG lindex);
  186.     virtual STDMETHODIMP_(void) OnRename(IMoniker *);
  187.     virtual STDMETHODIMP_(void) OnSave();
  188.     virtual STDMETHODIMP_(void) OnClose();
  189.     // *** IDropTarget ***
  190.     virtual STDMETHODIMP DragEnter(IDataObject *pdtobj, DWORD grfKeyState, POINTL pt, DWORD *pdwEffect);
  191.     virtual STDMETHODIMP DragOver(DWORD grfKeyState, POINTL pt, DWORD *pdwEffect);
  192.     virtual STDMETHODIMP DragLeave(void);
  193.     virtual STDMETHODIMP Drop(IDataObject *pdtobj, DWORD grfKeyState, POINTL pt, DWORD *pdwEffect);
  194.     // IInputObjectSite
  195.     virtual STDMETHODIMP OnFocusChangeIS(IUnknown* punkSrc, BOOL fSetFocus);
  196.     // IDocNavigate
  197.     virtual STDMETHODIMP OnReadyStateChange(IShellView* psvSource, DWORD dwReadyState);
  198.     virtual STDMETHODIMP get_ReadyState(DWORD * pdwReadyState);
  199.     // *** IPersist
  200.     virtual STDMETHODIMP GetClassID(CLSID *pclsid);
  201.     // *** IPersistHistory
  202.     virtual STDMETHODIMP LoadHistory(IStream *pStream, IBindCtx *pbc);
  203.     virtual STDMETHODIMP SaveHistory(IStream *pStream);
  204.     virtual STDMETHODIMP SetPositionCookie(DWORD dwPositionCookie);
  205.     virtual STDMETHODIMP GetPositionCookie(DWORD *pdwPositioncookie);
  206.     // *** IInternetSecurityMgrSite methods ***
  207.     // virtual STDMETHODIMP GetWindow(HWND * lphwnd) { return IOleWindow::GetWindow(lphwnd); }
  208.     virtual STDMETHODIMP EnableModeless(BOOL fEnable) { return EnableModelessSB(fEnable); }
  209.     // *** IVersionHost methods ***
  210.     virtual STDMETHODIMP QueryUseLocalVersionVector( BOOL *fUseLocal);
  211.     virtual STDMETHODIMP QueryVersionVector( IVersionVector *pVersion);
  212. #ifdef LIGHT_FRAMES
  213.     // *** IOleClientSite
  214.     virtual STDMETHODIMP SaveObject( void);
  215.     virtual STDMETHODIMP GetMoniker( DWORD dwAssign, DWORD dwWhichMoniker, IMoniker **ppmk);
  216.     virtual STDMETHODIMP GetContainer( IOleContainer **ppContainer);
  217.     virtual STDMETHODIMP ShowObject( void);
  218.     virtual STDMETHODIMP OnShowWindow( BOOL fShow);
  219.     virtual STDMETHODIMP RequestNewObjectLayout( void);
  220.     // *** IOleInPlaceSite
  221.     virtual STDMETHODIMP CanInPlaceActivate( void);
  222.     virtual STDMETHODIMP OnInPlaceActivate( void);
  223.     virtual STDMETHODIMP OnUIActivate( void);
  224.     virtual STDMETHODIMP GetWindowContext( IOleInPlaceFrame **ppFrame, 
  225.                                            IOleInPlaceUIWindow **ppDoc,
  226.                                            LPRECT lprcPosRect,
  227.                                            LPRECT lprcClipRect,
  228.                                            LPOLEINPLACEFRAMEINFO lpFrameInfo);
  229.     virtual STDMETHODIMP Scroll( SIZE scrollExtant);
  230.     virtual STDMETHODIMP OnUIDeactivate( BOOL fUndoable);
  231.     virtual STDMETHODIMP OnInPlaceDeactivate( void);
  232.     virtual STDMETHODIMP DiscardUndoState( void);
  233.     virtual STDMETHODIMP DeactivateAndUndo( void);
  234.     virtual STDMETHODIMP OnPosRectChange( LPCRECT lprcPosRect);
  235.     // *** IOleInPlaceFrame
  236.     virtual STDMETHODIMP InsertMenus( HMENU hmenuShared, LPOLEMENUGROUPWIDTHS lpMenuWidths)
  237.         { return InsertMenusSB(hmenuShared, lpMenuWidths); }
  238.     virtual STDMETHODIMP SetMenu( HMENU hmenuShared, HOLEMENU holemenu, HWND hwndActiveObject)
  239.         { return SetMenuSB(hmenuShared, holemenu, hwndActiveObject); }
  240.     virtual STDMETHODIMP RemoveMenus( HMENU hmenuShared)
  241.         { return RemoveMenusSB(hmenuShared); }
  242.     virtual STDMETHODIMP SetStatusText( LPCOLESTR pszStatusText)
  243.         { return SetStatusTextSB(pszStatusText); }
  244. //    virtual STDMETHODIMP EnableModeless( BOOL fEnable)
  245. //        { return EnableModelessSB(fEnable); }
  246.     virtual STDMETHODIMP TranslateAccelerator( LPMSG lpmsg, WORD wID)
  247.         { return TranslateAcceleratorSB(lpmsg, wID); }
  248. #endif
  249.     // This is the QueryInterface the aggregator implements
  250.     virtual HRESULT v_InternalQueryInterface(REFIID riid, LPVOID * ppvObj);
  251. protected:
  252.     // "protected" so derived classes can construct/destruct us too
  253.     CBaseBrowser2(IUnknown* punkAgg);   
  254.     virtual ~CBaseBrowser2();
  255.     
  256.     friend HRESULT CBaseBrowser2_CreateInstance(IUnknown* pUnkOuter, IUnknown** ppunk, LPCOBJECTINFO poi);
  257.     friend HRESULT CBaseBrowser2_Validate(HWND hwnd, LPVOID* ppsb);
  258.     // topmost CBaseBrowser2 in a frameset (IE3/AOL/CIS/VB)
  259.     virtual void        _OnNavigateComplete(LPCITEMIDLIST pidl, DWORD grfHLNF);
  260.     virtual HRESULT     _CheckZoneCrossing(LPCITEMIDLIST pidl);
  261.     virtual void        _PositionViewWindow(HWND hwnd, LPRECT prc);
  262.     virtual LRESULT     _DefWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
  263.     virtual void        _ViewChange(DWORD dwAspect, LONG lindex);
  264.     virtual void        _UpdateBackForwardState();
  265.     virtual BOOL        v_OnSetCursor(LPARAM lParam);
  266.     virtual STDMETHODIMP v_ShowHideChildWindows(BOOL fChildOnly);
  267.     virtual void        v_PropagateMessage(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL fSend);
  268.     virtual HRESULT     _ShowBlankPage(LPCTSTR pszAboutUrl, LPCITEMIDLIST pidlIntended);
  269.     
  270.     // ViewStateStream related
  271.     
  272.     HRESULT     _CheckInCacheIfOffline(LPCITEMIDLIST pidl, BOOL fIsAPost);
  273.     void        _CreateShortcutOnDesktop(BOOL fUI);
  274.     void        _AddToFavorites(LPCITEMIDLIST pidl, LPCTSTR pszTitle, BOOL fDisplayUI);
  275.     // to avoid having to pass hwnd on every message to WndProc, set it once
  276.     void        _SetWindow(HWND hwnd) { _bbd._hwnd = hwnd; }
  277.     void        _DoOptions(VARIANT* pvar);
  278.     LRESULT     _OnGoto(void);
  279.     void        _NavigateToPidlAsync(LPITEMIDLIST pidl, DWORD dwSBSP, BOOL fDontCallCancel = FALSE);
  280.     BOOL        _CanNavigate(void);
  281.     // inline so that lego will get the right opt.
  282.     void        _PreActivatePendingViewAsync(void) {
  283.         ASSERT(_bbd._psvPending);
  284.         _StopAsyncOperation();
  285.     };
  286.     BOOL        _ActivatePendingViewAsync(void);
  287.     void        _FreeQueuedPidl(LPITEMIDLIST* ppidl);
  288.     void        _StopAsyncOperation(void);
  289.     void        _MayUnblockAsyncOperation();
  290.     BOOL        _PostAsyncOperation(UINT uAction);
  291.     LRESULT     _SendAsyncOperation(UINT uAction);
  292.     void        _SendAsyncNavigationMsg(VARIANTARG *pvarargIn);
  293.     HRESULT     _OnCoCreateDocument(VARIANTARG *pvarargOut);
  294.     void        _NotifyCommandStateChange();
  295.     BOOL  _IsViewMSHTML(IShellView *psv);
  296.     void        _Exec_psbMixedZone();
  297. #ifdef TEST_AMBIENTS
  298.     BOOL        _LocalOffline(int iCmd);
  299.     BOOL        _LocalSilent(int iCmd);
  300. #endif // TEST_AMBIENTS
  301.     
  302.     #define NAVTYPE_ShellNavigate   0x01
  303.     #define NAVTYPE_PageIsChanging  0x02
  304.     #define NAVTYPE_SiteIsChanging  0x04
  305.     void        _GetNavigationInfo(WORD * pwNavTypeFlags);
  306.     virtual void _MayPlayTransition(IShellView* psvNew, HWND hwndViewNew, BOOL bSiteChanging);
  307.     void        _EnableStop(BOOL fEnable);
  308.     LRESULT     _OnInitMenuPopup(HMENU hmenuPopup, int nIndex, BOOL fSystemMenu);
  309.     HRESULT     _updateNavigationUI();
  310.     HRESULT     _setDescendentNavigate(VARIANTARG *pvarargIn);
  311.     HRESULT     _FireBeforeNavigateEvent(LPCITEMIDLIST pidl, BOOL* pfUseCache);
  312.     HRESULT     _OpenNewFrame(LPITEMIDLIST pidlNew, UINT wFlags);
  313.     STDMETHODIMP    _UIActivateView(UINT uState);
  314.     HRESULT     _CancelPendingNavigation(BOOL fDontReleaseState = FALSE);
  315.     void        _StopCurrentView(void);
  316.     void        _MayTrackClickStream(LPITEMIDLIST pidlThis);        // (peihwal)
  317.     virtual STDMETHODIMP _OnFocusChange(UINT itb);
  318.     void        _RegisterAsDropTarget();
  319.     void        _UnregisterAsDropTarget();
  320.     
  321.     
  322.     enum BrowserPaletteType
  323.     {
  324.         BPT_DeferPaletteSupport = 0,    // we don't think we own the palette
  325.         BPT_UnknownDisplay,             // need to decide if we need a palette
  326.         BPT_DisplayViewChanged,         // BPT_UnknownDisplay handling notify
  327.         BPT_UnknownPalette,             // need to decide what palette to use
  328.         BPT_PaletteViewChanged,         // BPT_UnknownPalette handling notify
  329.         BPT_Normal,                     // handle WM_QUERYNEWPALETTE ourselves
  330.         BPT_ShellView,                  // forward WM_QUERYNEWPALETTE to view
  331.         BPT_NotPalettized               // not a palettized display, do nothing
  332.     };
  333.     
  334.     void            _ColorsDirty(BrowserPaletteType bptNew);
  335.     void            _DisplayChanged(WPARAM wParam, LPARAM lParam);
  336.     HRESULT         _UpdateBrowserPaletteInPlace(LOGPALETTE *plp);
  337.     void            _RealizeBrowserPalette(BOOL fBackground);
  338.     virtual void    _PaletteChanged(WPARAM wParam, LPARAM lParam);
  339.     BOOL            _QueryNewPalette();
  340.     /// BEGIN-CHC- Security fix for viewing non shdocvw ishellviews
  341.     void    _CheckDisableViewWindow();
  342.     BOOL    _SubclassDefview();
  343.     static LRESULT DefViewWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
  344.     WNDPROC _pfnDefView;
  345.     /// END-CHC- Security fix for viewing non shdocvw ishellviews
  346.     
  347.     void            _DLMDestroy(void);
  348.     void            _DLMUpdate(MSOCMD* prgCmd);
  349.     void            _DLMRegister(IUnknown* punk);
  350.     void            CreateNewSyncShellView( void );
  351.     void            _UpdateTravelLog(void);
  352.     virtual BOOL    _HeyMoe_IsWiseGuy(void) {return FALSE;}
  353.     IBrowserService2*    _pbsOuter;
  354.     IShellBrowser*       _psbOuter;
  355.     IServiceProvider*    _pspOuter;
  356.     IDockingWindowSite*  _pdwsOuter;
  357.     // The following are intercepted by CCommonBrowser, but we don't call 'em
  358.     //IOleCommandTarget* _pctOuter;
  359.     //IInputObjectSite*  _piosOuter;
  360.     BASEBROWSERDATA _bbd;
  361.     IUnknown *_pauto;
  362.     BrowserPaletteType  _bptBrowser;
  363.     HPALETTE            _hpalBrowser;
  364.     IViewObject *_pvo;  // view object implementation on the shell view
  365.     UINT  _cRefUIActivateSV;
  366.     DWORD  _dwBrowserIndex;
  367.     DWORD       _dwReadyState;
  368.     DWORD       _dwReadyStateCur;
  369.     LPWSTR      _pszTitleCur;
  370.     
  371.     IDropTarget * _pdtView; // Pointer to _bbd._psv's IDropTarget interface
  372.     
  373.     IOleObject *_poleHistory;
  374.     IStream    *_pstmHistory;
  375.     IBindCtx   *_pbcHistory;
  376.     IOleInPlaceActiveObject *_pact;     // for UIWindow
  377.     IClassFactory* _pcfHTML;            // cached/locked class factory
  378.     
  379.     DWORD       _dwReadyStatePending;
  380.     LPWSTR      _pszTitlePending;
  381.     DWORD       _grfHLNFPending;
  382.     HDPA        _hdpaDLM;           // downloading object (for DLM)
  383.     BOOL        _cp;                // current codepage
  384.     //
  385.     // NOTES: Currently, we support only one pending navigation.
  386.     //  If we want to support queued navigation, we need to turn
  387.     //  following two variables into a queue. (SatoNa)
  388.     //
  389.     DWORD       _uActionQueued;       // queued action
  390.     LPITEMIDLIST _pidlQueued;         // pidl to go asynchronously
  391.     DWORD       _dwSBSPQueued;        // grfHLNF to go asynchronously
  392.     UINT        _cRefCannotNavigate;  // Increment when we can navigate
  393.     RECT _rcBorderDoc;                  // for UIWindow
  394.     BITBOOL     _fDontResizeView : 1; // Don't resize _hwndView
  395.     BITBOOL     _fNavigate:1;       // are we navigating?
  396.     BITBOOL     _fDescendentNavigate:1; // are our descendents navigating?
  397.     BITBOOL     _fDownloadSet:1; // did we invoke download animation?
  398.     BITBOOL     _fNoDragDrop:1;          // TRUE iff we want to register for drops
  399.     BITBOOL     _fRegisteredDragDrop:1;  // TRUE iff we have registered for drops
  400.     BITBOOL     _fNavigatedToBlank: 1;  // Has called _ShowBlankPage once.
  401.     BITBOOL     _fAsyncNavigate:1; // Ignore sync-hack-bug-fix
  402.     BITBOOL     _fPausedByParent :1;    // Interaction paused by parent
  403.     BITBOOL     _fDontAddTravelEntry:1;
  404.     BITBOOL     _fIsLocalAnchor:1;
  405.     BITBOOL     _fGeneratedPage:1;      //  trident told us that the page is generated.
  406.     BITBOOL     _fOwnsPalette:1;        // does the browser own the palette ? (did we get QueryNewPalette ..)
  407.     BITBOOL     _fUsesPaletteCommands : 1; // if we are using a separate communication with trident for palette commands
  408.     BITBOOL     _fCreateViewWindowPending:1;
  409.     BITBOOL     _fReleasingShellView:1; 
  410.     BITBOOL     _fDeferredUIDeactivate:1;
  411.     BITBOOL     _fDeferredSelfDestruction:1;
  412.     BITBOOL     _fActive:1;  // remember if the frame is active or not (WM_ACTIVATE)
  413.     BITBOOL     _fUIActivateOnActive:1; // TRUE iff we have a bending uiactivate
  414.     BITBOOL     _fInQueryStatus:1;
  415.     BITBOOL     _fCheckedDesktopComponentName:1;
  416.     BITBOOL     _fInDestroy:1;          // being destroyed
  417.     // for IDropTarget
  418.     
  419.     DWORD _dwDropEffect;
  420. #ifdef DEBUG
  421.     BOOL        _fProcessed_WM_CLOSE; // TRUE iff WM_CLOSE processed
  422. #endif
  423.     // friend   CIEFrameAuto;
  424.     interface IShellHTMLWindowSupport   *_phtmlWS;  
  425.     
  426.     IUrlHistoryStg *_pIUrlHistoryStg;   // pointer to url history storage object
  427.     
  428.     ITargetFrame2 *_ptfrm;
  429.     
  430.     //  Cached History IShellFolder
  431.     IUnknown *_punkSFHistory;
  432.     //  what SSL icon to show
  433.     int     _eSecureLockIconPending;
  434.     
  435.     // Support for OLECMDID_HTTPEQUIV (Client Pull, PICS, etc)
  436.     HRESULT _HandleHttpEquiv (VARIANT *pvarargIn, VARIANT *pvarargOut, BOOL fDone);
  437.     HRESULT _KillRefreshTimer( void );
  438.     VOID    _OnRefreshTimer(void);
  439.     void    _StartRefreshTimer(void);
  440.     // equiv handlers we know about
  441.     friend HRESULT _HandleRefresh (HWND hwnd, WCHAR *pwz, WCHAR *pwzColon, CBaseBrowser2 *pbb, BOOL fDone, LPARAM lParam);
  442.     friend HRESULT _HandlePICS (HWND hwnd, WCHAR *pwz, WCHAR *pwzColon, CBaseBrowser2 *pbb, BOOL fDone, LPARAM lParam);
  443.     friend VOID CALLBACK _RefreshTimerProc (HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime);
  444.     friend HRESULT _HandleViewTransition(HWND hwnd, WCHAR *pwz, WCHAR *pwzColon, CBaseBrowser2 *pbb, BOOL fDone, LPARAM lParam);
  445.     // Client Pull values
  446.     WCHAR *_pwzRefreshURL;
  447.     int    _iRefreshTimeout;
  448.     BOOL   _iRefreshTimeoutSet:1;
  449.     INT_PTR _iRefreshTimerID;
  450. #ifdef MESSAGEFILTER
  451.     // COM Message filter used to help dispatch TIMER messages during OLE operations.
  452.     LPMESSAGEFILTER _lpMF;
  453. #endif
  454.     friend CTransitionSite;
  455.     CTransitionSite * _ptrsite;
  456.     CUrlTrackingStg * _ptracking;
  457.     // _fTopBrowser vs. _fNoTopLevelBrowser:
  458.     // _fTopBrowser: True means we are the top most browser, or a top most browser does not exist and we are acting like the top most browser.
  459.     //               In the latter case, the immediate childern of our host will also act like top most browsers.
  460.     // _fNoTopLevelBrowser: This means that the top most item isn't one of our shell browsers, so it's immediate browser child
  461.     //               will act like a top most browser.
  462.     //
  463.     //     In normal cases, a shell browser (CShellBrowser, CDesktopBrowser, ...) is a top most browser
  464.     //   with TRUE==_fTopBrowser and FALSE==_fNoTopLevelBrowser.  It can have subframes that will have
  465.     //   FALSE==_fTopBrowser and FALSE==_fNoTopLevelBrowser.
  466.     //
  467.     //   The only time _fNoTopLevelBrowser is TRUE is if some other object (like Athena) hosts MSHTML directly
  468.     //   which will prevent some shell browser from being top most.  Since the HTML can have several frames,
  469.     //   each will have TRUE==_fTopBrowser, so _fNoTopLevelBrowser will be set to TRUE to distinguish this case.
  470.     BOOL        _fTopBrowser :1;    // Should only be set via the _SetTopBrowser method
  471.     BOOL        _fNoTopLevelBrowser :1;         // TRUE iff the toplevel is a non-shell browser (Athena).  Shell browsers include CDesktopBrowser, CShellBrowser, ...
  472.     BOOL        _fHaveOldStatusText :1;
  473.     
  474.     WCHAR       _szwOldStatusText[MAX_PATH];
  475.     FOLDERSETDATABASE _fldBase; // cache viewset results in here (used when navigating)
  476.     // Manages extended toolbar buttons and tools menu extensions for IE
  477.     IToolbarExt* _pToolbarExt;
  478. public:
  479.     // handling for plugUI shutdown
  480.     // need the hwnd for the lang change modal property sheet
  481.     static HDPA         s_hdpaOptionsHwnd;
  482.     static void         _SyncDPA();
  483.     static int CALLBACK _OptionsPropSheetCallback(HWND hwndDlg, UINT uMsg, LPARAM lParam);
  484. private:
  485.     HRESULT _AddFolderOptionsSheets(DWORD dwReserved, LPFNADDPROPSHEETPAGE pfnAddPropSheetPage, LPPROPSHEETHEADER ppsh);
  486.     HRESULT _AddInternetOptionsSheets(DWORD dwReserved, LPFNADDPROPSHEETPAGE pfnAddPropSheetPage, LPPROPSHEETHEADER ppsh);
  487.     // this is private!  it should only be called by _NavigateToPidl
  488.     HRESULT     _CreateNewShellViewPidl(LPCITEMIDLIST pidl, DWORD grfHLNF, DWORD fSBSP);
  489.     HRESULT     _CreateNewShellView(IShellFolder* psf, LPCITEMIDLIST pidl, DWORD grfHLNF);
  490. };
  491. HRESULT _DisplayParseError(HWND hwnd, HRESULT hres, LPCWSTR pwszPath);
  492. #endif // _BASESB2_H