Left: | ||
Right: |
OLD | NEW |
---|---|
1 /* | 1 /* |
2 * http://msdn.microsoft.com/en-us/library/bb250436.aspx | 2 * http://msdn.microsoft.com/en-us/library/bb250436.aspx |
3 */ | 3 */ |
4 | 4 |
5 #ifndef _PLUGIN_CLASS_H_ | 5 #ifndef _PLUGIN_CLASS_H_ |
6 #define _PLUGIN_CLASS_H_ | 6 #define _PLUGIN_CLASS_H_ |
7 | 7 |
8 | 8 |
9 #include "PluginTypedef.h" | 9 #include "PluginTypedef.h" |
10 #include "Plugin.h" | 10 #include "Plugin.h" |
(...skipping 10 matching lines...) Expand all Loading... | |
21 #define ICON_PLUGIN_DEACTIVATED 2 | 21 #define ICON_PLUGIN_DEACTIVATED 2 |
22 #define ICON_MAX 3 | 22 #define ICON_MAX 3 |
23 | 23 |
24 #define WM_LAUNCH_INFO (WM_APP + 10) | 24 #define WM_LAUNCH_INFO (WM_APP + 10) |
25 #define WM_WHITELIST_DOMAIN (WM_LAUNCH_INFO + 1) | 25 #define WM_WHITELIST_DOMAIN (WM_LAUNCH_INFO + 1) |
26 | 26 |
27 class CPluginMimeFilterClient; | 27 class CPluginMimeFilterClient; |
28 | 28 |
29 | 29 |
30 class ATL_NO_VTABLE CPluginClass : | 30 class ATL_NO_VTABLE CPluginClass : |
31 public CComObjectRootEx<CComMultiThreadModel>, | 31 public ATL::CComObjectRootEx<ATL::CComMultiThreadModel>, |
32 public CComCoClass<CPluginClass, &CLSID_PluginClass>, | 32 public ATL::CComCoClass<CPluginClass, &CLSID_PluginClass>, |
33 public IObjectWithSiteImpl<CPluginClass>, | 33 public ATL::IObjectWithSiteImpl<CPluginClass>, |
34 public IDispatchImpl<IIEPlugin, &IID_IIEPlugin, &LIBID_PluginLib>, | 34 public IOleCommandTarget, |
35 public IOleCommandTarget | 35 public ATL::IDispEventImpl<1, CPluginClass, &DIID_DWebBrowserEvents2, &LIBID_S HDocVw, 1, 1> |
Eric
2014/12/31 17:03:15
From http://msdn.microsoft.com/en-us/library/d7eec
Oleksandr
2015/01/09 00:02:17
For reference: discussion on this moved to the com
| |
36 { | 36 { |
37 | 37 |
38 friend class CPluginTab; | 38 friend class CPluginTab; |
39 | 39 |
40 private: | 40 private: |
41 | 41 |
42 CPluginTab* m_tab; | 42 CPluginTab* m_tab; |
43 | 43 |
44 public: | 44 public: |
45 | 45 |
46 DECLARE_REGISTRY_RESOURCEID(IDR_PLUGIN_CLASS) | 46 DECLARE_REGISTRY_RESOURCEID(IDR_PLUGIN_CLASS) |
47 | 47 |
48 DECLARE_PROTECT_FINAL_CONSTRUCT() | 48 DECLARE_PROTECT_FINAL_CONSTRUCT() |
49 | 49 |
50 BEGIN_COM_MAP(CPluginClass) | 50 BEGIN_COM_MAP(CPluginClass) |
51 COM_INTERFACE_ENTRY(IIEPlugin) | |
52 COM_INTERFACE_ENTRY(IDispatch) | |
53 COM_INTERFACE_ENTRY(IObjectWithSite) | 51 COM_INTERFACE_ENTRY(IObjectWithSite) |
54 COM_INTERFACE_ENTRY(IOleCommandTarget) | 52 COM_INTERFACE_ENTRY(IOleCommandTarget) |
55 END_COM_MAP() | 53 END_COM_MAP() |
56 | 54 |
55 BEGIN_SINK_MAP(CPluginClass) | |
56 SINK_ENTRY_EX(1, DIID_DWebBrowserEvents2, DISPID_BEFORENAVIGATE2, OnBeforeNa vigate2) | |
57 SINK_ENTRY_EX(1, DIID_DWebBrowserEvents2, DISPID_DOWNLOADBEGIN, OnDownloadBe gin) | |
58 SINK_ENTRY_EX(1, DIID_DWebBrowserEvents2, DISPID_DOWNLOADCOMPLETE, OnDownloa dComplete) | |
59 SINK_ENTRY_EX(1, DIID_DWebBrowserEvents2, DISPID_DOCUMENTCOMPLETE, OnDocumen tComplete) | |
60 SINK_ENTRY_EX(1, DIID_DWebBrowserEvents2, DISPID_WINDOWSTATECHANGED, OnWindo wStateChanged) | |
61 SINK_ENTRY_EX(1, DIID_DWebBrowserEvents2, DISPID_COMMANDSTATECHANGE, OnComma ndStateChange) | |
62 SINK_ENTRY_EX(1, DIID_DWebBrowserEvents2, DISPID_ONQUIT, Unadvice) | |
63 END_SINK_MAP() | |
64 | |
57 CPluginClass(); | 65 CPluginClass(); |
58 ~CPluginClass(); | 66 ~CPluginClass(); |
59 | 67 |
60 HRESULT FinalConstruct(); | 68 HRESULT FinalConstruct(); |
61 void FinalRelease(); | 69 void FinalRelease(); |
62 | 70 |
63 // IObjectWithSite | 71 // IObjectWithSite |
64 | 72 |
65 STDMETHOD(SetSite)(IUnknown *pUnkSite); | 73 STDMETHOD(SetSite)(IUnknown *pUnkSite); |
66 | 74 |
67 // IOleCommandTarget | 75 // IOleCommandTarget |
68 | 76 |
69 STDMETHOD(QueryStatus)(const GUID* pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[ ], OLECMDTEXT* pCmdText); | 77 STDMETHOD(QueryStatus)(const GUID* pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[ ], OLECMDTEXT* pCmdText); |
70 STDMETHOD(Exec)(const GUID*, DWORD nCmdID, DWORD, VARIANTARG*, VARIANTARG* pva Out); | 78 STDMETHOD(Exec)(const GUID*, DWORD nCmdID, DWORD, VARIANTARG*, VARIANTARG* pva Out); |
71 | 79 |
72 // IDispatch | |
73 | |
74 STDMETHOD(Invoke)(DISPID dispidMember,REFIID riid, LCID lcid, WORD wFlags, | |
75 DISPPARAMS * pdispparams, VARIANT * pvarResult,EXCEPINFO * pexcepinfo, UINT * puArgErr); | |
76 | 80 |
77 static CPluginTab* GetTab(DWORD dwThreadId); | 81 static CPluginTab* GetTab(DWORD dwThreadId); |
78 CPluginTab* GetTab(); | 82 CPluginTab* GetTab(); |
79 | 83 |
80 void UpdateStatusBar(); | 84 void UpdateStatusBar(); |
81 static DWORD WINAPI MainThreadProc(LPVOID pParam); | 85 static DWORD WINAPI MainThreadProc(LPVOID pParam); |
82 | 86 |
83 private: | 87 private: |
84 | 88 |
85 bool SetMenuBar(HMENU hMenu, const CString& url); | 89 bool SetMenuBar(HMENU hMenu, const CString& url); |
86 HMENU CreatePluginMenu(const CString& url); | 90 HMENU CreatePluginMenu(const CString& url); |
87 | 91 |
88 void DisplayPluginMenu(HMENU hMenu, int nToolbarCmdID, POINT pt, UINT nMenuFla gs); | 92 void DisplayPluginMenu(HMENU hMenu, int nToolbarCmdID, POINT pt, UINT nMenuFla gs); |
89 bool CreateStatusBarPane(); | 93 bool CreateStatusBarPane(); |
90 | 94 |
91 CComPtr<IConnectionPoint> GetConnectionPoint(); | |
92 | |
93 public: | 95 public: |
94 HWND GetBrowserHWND() const; | 96 HWND GetBrowserHWND() const; |
95 HWND GetTabHWND() const; | 97 HWND GetTabHWND() const; |
96 CComQIPtr<IWebBrowser2> GetBrowser() const; | 98 CComQIPtr<IWebBrowser2> GetBrowser() const; |
97 | 99 |
98 STDMETHODIMP OnTabChanged(DISPPARAMS* pDispParams, WORD wFlags); | |
99 | 100 |
100 static CPluginMimeFilterClient* s_mimeFilter; | 101 static CPluginMimeFilterClient* s_mimeFilter; |
101 | 102 |
102 private: | 103 private: |
103 | 104 |
104 CString GetBrowserUrl() const; | 105 CString GetBrowserUrl() const; |
105 | 106 |
106 | 107 |
107 static DWORD WINAPI StartInitObject(LPVOID thisPtr); | 108 static DWORD WINAPI StartInitObject(LPVOID thisPtr); |
108 bool InitObject(bool bBHO); | 109 bool InitObject(bool bBHO); |
109 void CloseTheme(); | 110 void CloseTheme(); |
110 void UpdateTheme(); | 111 void UpdateTheme(); |
111 | 112 |
112 static HICON GetStatusBarIcon(const CString& url); | 113 static HICON GetStatusBarIcon(const CString& url); |
113 static CPluginClass* FindInstance(HWND hStatusBarWnd); | 114 static CPluginClass* FindInstance(HWND hStatusBarWnd); |
114 static LRESULT CALLBACK NewStatusProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); | 115 static LRESULT CALLBACK NewStatusProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); |
115 static LRESULT CALLBACK PaneWindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); | 116 static LRESULT CALLBACK PaneWindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); |
116 static void FirstRunThread(); | 117 static void FirstRunThread(); |
117 void BeforeNavigate2(DISPPARAMS* pDispParams); | |
118 | 118 |
119 void Unadvice(); | 119 void STDMETHODCALLTYPE OnBeforeNavigate2(/* [in] */ IDispatch* pDisp, |
120 /* [in] */ VARIANT* URL, | |
121 /* [in] */ VARIANT* Flags, | |
122 /* [in] */ VARIANT* TargetFrameName, | |
123 /* [in] */ VARIANT* PostData, | |
124 /* [in] */ VARIANT* Headers, | |
125 /* [in, out] */ VARIANT_BOOL* Cancel); | |
126 void STDMETHODCALLTYPE OnDownloadBegin(); | |
127 void STDMETHODCALLTYPE OnDownloadComplete(); | |
128 void STDMETHODCALLTYPE OnDocumentComplete(IDispatch* frameBrowserDisp, VARIANT * /*urlOrPidl*/); | |
129 void STDMETHODCALLTYPE OnWindowStateChanged(unsigned long flags, unsigned long validFlagsMask); | |
130 void STDMETHODCALLTYPE OnCommandStateChange(long command, VARIANT_BOOL enable) ; | |
131 // OnOnQuit | |
132 void STDMETHODCALLTYPE Unadvice(); | |
120 | 133 |
121 void ShowStatusBar(); | 134 void ShowStatusBar(); |
122 bool IsStatusBarEnabled(); | 135 bool IsStatusBarEnabled(); |
123 | 136 |
124 public: | 137 public: |
125 CComQIPtr<IWebBrowser2> m_webBrowser2; | 138 CComQIPtr<IWebBrowser2> m_webBrowser2; |
126 private: | 139 private: |
127 DWORD m_nConnectionID; | |
128 HWND m_hBrowserWnd; | 140 HWND m_hBrowserWnd; |
129 HWND m_hTabWnd; | 141 HWND m_hTabWnd; |
130 HWND m_hStatusBarWnd; | 142 HWND m_hStatusBarWnd; |
131 HWND m_hPaneWnd; | 143 HWND m_hPaneWnd; |
132 | 144 |
133 WNDPROC m_pWndProcStatus; | 145 WNDPROC m_pWndProcStatus; |
134 int m_nPaneWidth; | 146 int m_nPaneWidth; |
135 HANDLE m_hTheme; | 147 HANDLE m_hTheme; |
136 | 148 |
137 CriticalSection m_csStatusBar; | 149 CriticalSection m_csStatusBar; |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
170 | 182 |
171 // Async browser | 183 // Async browser |
172 static CComQIPtr<IWebBrowser2> s_asyncWebBrowser2; | 184 static CComQIPtr<IWebBrowser2> s_asyncWebBrowser2; |
173 static CComQIPtr<IWebBrowser2> GetAsyncBrowser(); | 185 static CComQIPtr<IWebBrowser2> GetAsyncBrowser(); |
174 }; | 186 }; |
175 | 187 |
176 OBJECT_ENTRY_AUTO(__uuidof(PluginClass), CPluginClass) | 188 OBJECT_ENTRY_AUTO(__uuidof(PluginClass), CPluginClass) |
177 | 189 |
178 | 190 |
179 #endif // _PLUGIN_CLASS_H_ | 191 #endif // _PLUGIN_CLASS_H_ |
OLD | NEW |