00001
00002
00003
00004
00005 #if !defined(AFX_FSSHELLBROWSERSEVENTS_H__7A084469_2A99_4025_A3F4_D7545A51F633__INCLUDED_)
00006 #define AFX_FSSHELLBROWSERSEVENTS_H__7A084469_2A99_4025_A3F4_D7545A51F633__INCLUDED_
00007
00008 #if _MSC_VER > 1000
00009 #pragma once
00010 #endif
00011
00012 enum fsSHBrowserEvent
00013 {
00014 SBE_BEFORENAVIGATE,
00015 SBE_DLBEGIN,
00016 SBE_DLCOMPLETE,
00017 SBE_DOCUMENTCOMPLETE,
00018 };
00019
00020 typedef BOOL (*fntSHBrowserEvent) (class fsShellBrowsersEvents* pBrowser, fsSHBrowserEvent ev, DWORD dwInfo, LPVOID lpParam);
00021
00022 class fsShellBrowsersEvents : public CCmdTarget
00023 {
00024 DECLARE_DYNCREATE(fsShellBrowsersEvents)
00025
00026 public:
00027 fsShellBrowsersEvents();
00028 virtual ~fsShellBrowsersEvents();
00029
00030 public:
00031 IWebBrowser2* get_WB();
00032 BOOL is_Attached();
00033
00034 HRESULT Attach(SHDocVw::IShellWindowsPtr& spSHWnds);
00035
00036 void Detach();
00037
00038 void SetEventFunc (fntSHBrowserEvent pfn, LPVOID lpParam);
00039
00040
00041
00042
00043
00044 protected:
00045 bool m_bDetaching;
00046 LPDISPATCH m_pWBRoot;
00047 void OnNavigateComplete2 (LPDISPATCH pDisp, VARIANT* URL);
00048 void OnDocumentComplete (LPDISPATCH pDisp, VARIANT* URL);
00049 void OnDownloadComplete();
00050 void OnDownloadBegin();
00051 void OnBeforeNavigate (LPDISPATCH, VARIANT*, VARIANT*, VARIANT*, VARIANT*, VARIANT*, BOOL*);
00052
00053 BOOL Event (fsSHBrowserEvent ev, DWORD dwInfo = 0);
00054 fntSHBrowserEvent m_pfnEvents;
00055 LPVOID m_lpEventsParam;
00056
00057 DECLARE_DISPATCH_MAP()
00058
00059 HRESULT Attach (SHDocVw::IWebBrowser2Ptr& spBrowser);
00060
00061 IWebBrowser2Ptr m_spWB;
00062 IConnectionPointPtr m_spConnPt;
00063 DWORD m_dwCookie;
00064
00065 fs::list <fsShellBrowsersEvents*> m_vBrowsers;
00066
00067
00068
00069
00070
00071
00072 DECLARE_MESSAGE_MAP()
00073 };
00074
00075
00076
00077 #endif