1c2c66affSColin Finck /*
2c2c66affSColin Finck  * ReactOS Explorer
3c2c66affSColin Finck  *
4c2c66affSColin Finck  * Copyright 2009 Andrew Hill <ash77 at domain reactos.org>
5c2c66affSColin Finck  *
6c2c66affSColin Finck  * This library is free software; you can redistribute it and/or
7c2c66affSColin Finck  * modify it under the terms of the GNU Lesser General Public
8c2c66affSColin Finck  * License as published by the Free Software Foundation; either
9c2c66affSColin Finck  * version 2.1 of the License, or (at your option) any later version.
10c2c66affSColin Finck  *
11c2c66affSColin Finck  * This library is distributed in the hope that it will be useful,
12c2c66affSColin Finck  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13c2c66affSColin Finck  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14c2c66affSColin Finck  * Lesser General Public License for more details.
15c2c66affSColin Finck  *
16c2c66affSColin Finck  * You should have received a copy of the GNU Lesser General Public
17c2c66affSColin Finck  * License along with this library; if not, write to the Free Software
18c2c66affSColin Finck  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19c2c66affSColin Finck  */
20c2c66affSColin Finck 
21c2c66affSColin Finck #pragma once
22c2c66affSColin Finck 
23674136bcSWhindmar Saksit #define ITBARSTREAM_SHELLBROWSER 0
24674136bcSWhindmar Saksit #define ITBARSTREAM_WEBBROWSER 1
25674136bcSWhindmar Saksit #define ITBARSTREAM_EXPLORER 2
26674136bcSWhindmar Saksit 
27c2c66affSColin Finck static const int gSearchCommandID = 1003;
28c2c66affSColin Finck static const int gFoldersCommandID = 1004;
29c2c66affSColin Finck static const int gMoveToCommandID = FCIDM_SHVIEW_MOVETO;
30c2c66affSColin Finck static const int gCopyToCommandID = FCIDM_SHVIEW_COPYTO;
31c2c66affSColin Finck static const int gDeleteCommandID = FCIDM_SHVIEW_DELETE;
32c2c66affSColin Finck static const int gUndoCommandID = FCIDM_SHVIEW_UNDO;
33c2c66affSColin Finck static const int gViewsCommandID = FCIDM_SHVIEW_AUTOARRANGE;
34c2c66affSColin Finck static const int gStopCommandID = 1010;
35c2c66affSColin Finck static const int gHomeCommandID = 1012;
36c2c66affSColin Finck static const int gFavoritesCommandID = 1015;
37c2c66affSColin Finck static const int gHistoryCommandID = 1016;
38c2c66affSColin Finck static const int gFullScreenCommandID = 1017;
39c2c66affSColin Finck static const int gPropertiesCommandID = FCIDM_SHVIEW_PROPERTIES;
40c2c66affSColin Finck static const int gCutCommandID = FCIDM_SHVIEW_CUT;
41c2c66affSColin Finck static const int gCopyCommandID = FCIDM_SHVIEW_COPY;
42c2c66affSColin Finck static const int gPasteCommandID = FCIDM_SHVIEW_INSERT;
43c2c66affSColin Finck 
44c2c66affSColin Finck class CMenuCallback :
45c2c66affSColin Finck     public CComObjectRootEx<CComMultiThreadModelNoCS>,
46c2c66affSColin Finck     public IShellMenuCallback
47c2c66affSColin Finck {
48c2c66affSColin Finck private:
49c2c66affSColin Finck     CComPtr<IShellMenu>             fFavoritesMenu;
50c2c66affSColin Finck public:
51c2c66affSColin Finck     CMenuCallback();
52c2c66affSColin Finck     virtual ~CMenuCallback();
53c2c66affSColin Finck 
54c2c66affSColin Finck     HRESULT STDMETHODCALLTYPE GetObject(LPSMDATA psmd, REFIID riid, void **ppvObject);
55c2c66affSColin Finck public:
56c2c66affSColin Finck     // *** IShellMenuCallback methods ***
57c2c66affSColin Finck     virtual HRESULT STDMETHODCALLTYPE CallbackSM(LPSMDATA psmd, UINT uMsg, WPARAM wParam, LPARAM lParam);
58c2c66affSColin Finck 
59c2c66affSColin Finck BEGIN_COM_MAP(CMenuCallback)
60c2c66affSColin Finck     COM_INTERFACE_ENTRY_IID(IID_IShellMenuCallback, IShellMenuCallback)
61c2c66affSColin Finck END_COM_MAP()
62c2c66affSColin Finck };
63c2c66affSColin Finck 
64c2c66affSColin Finck class CInternetToolbar :
65c2c66affSColin Finck     public CWindowImpl<CInternetToolbar, CWindow, CControlWinTraits>,
66c2c66affSColin Finck     public CComCoClass<CInternetToolbar, &CLSID_InternetToolbar>,
67c2c66affSColin Finck     public CComObjectRootEx<CComMultiThreadModelNoCS>,
68c2c66affSColin Finck     public IInputObject,
69c2c66affSColin Finck     public IDockingWindow,
70c2c66affSColin Finck     public IPersistStreamInit,
71c2c66affSColin Finck     public IOleCommandTarget,
72c2c66affSColin Finck     public IDispatch,
73c2c66affSColin Finck     public IExplorerToolbar,
74c2c66affSColin Finck     public IShellChangeNotify,
75c2c66affSColin Finck     public IObjectWithSite,
76c2c66affSColin Finck     public IServiceProvider,
77c2c66affSColin Finck     public IWinEventHandler,
78c2c66affSColin Finck     public IBandSite
79c2c66affSColin Finck {
80c2c66affSColin Finck public:
81c2c66affSColin Finck     CComPtr<IUnknown>                       fSite;              // our site
82c2c66affSColin Finck     HWND                                    fMainReBar;         // rebar for top of window
83c2c66affSColin Finck     bool                                    fLocked;            // is bar locked to prevent changes?
84c2c66affSColin Finck     CComPtr<IShellMenu>                     fMenuBar;           // the menu rebar
85c2c66affSColin Finck     HWND                                    fMenuBandWindow;
86c2c66affSColin Finck     HWND                                    fNavigationWindow;
87c2c66affSColin Finck     CComPtr<IUnknown>                       fLogoBar;           // the reactos logo
88c2c66affSColin Finck     CComPtr<IUnknown>                       fControlsBar;       // navigation controls
89c2c66affSColin Finck     CComPtr<IUnknown>                       fNavigationBar;     // address bar
90c2c66affSColin Finck     CComPtr<CMenuCallback>                  fMenuCallback;
91c2c66affSColin Finck     CComPtr<IOleCommandTarget>              fCommandTarget;
92c2c66affSColin Finck     GUID                                    fCommandCategory;
93c2c66affSColin Finck     HWND                                    fToolbarWindow;
94c2c66affSColin Finck     DWORD                                   fAdviseCookie;
95c2c66affSColin Finck     CComPtr<IBandProxy>                     fBandProxy;
96c2c66affSColin Finck     BOOL                                    fSizing;
97c2c66affSColin Finck     POINT                                   fStartPosition;
98c2c66affSColin Finck     LONG                                    fStartHeight;
9943b3dc20SCarl J. Bialorucki     ShellSettings                           *pSettings;
100674136bcSWhindmar Saksit     BOOL                                    fIgnoreChanges;
101c2c66affSColin Finck public:
102c2c66affSColin Finck     CInternetToolbar();
103c2c66affSColin Finck     virtual ~CInternetToolbar();
104c2c66affSColin Finck     void AddDockItem(IUnknown *newItem, int bandID, int flags);
105*df5affedSWhindmar Saksit     HRESULT EnumBands(UINT Index, int *pBandId, IUnknown **ppUnkBand);
106c2c66affSColin Finck     HRESULT ReserveBorderSpace(LONG maxHeight = -1);
107c2c66affSColin Finck     HRESULT CreateMenuBar(IShellMenu **menuBar);
108c2c66affSColin Finck     HRESULT CreateToolsBar(IUnknown **toolsBar);
109c2c66affSColin Finck     HRESULT LockUnlockToolbars(bool locked);
110c2c66affSColin Finck     HRESULT CommandStateChanged(bool newValue, int commandID);
111c2c66affSColin Finck     HRESULT CreateAndInitBandProxy();
112e9cba537SGiannis Adamopoulos     HRESULT IsBandVisible(int BandID);
113674136bcSWhindmar Saksit     HRESULT SetBandVisibility(int BandID, int Show);
114e9cba537SGiannis Adamopoulos     HRESULT ToggleBandVisibility(int BandID);
115a0c5cafcSGiannis Adamopoulos     HRESULT SetState(const GUID *pguidCmdGroup, long commandID, OLECMD* pcmd);
11643b3dc20SCarl J. Bialorucki     void RefreshLockedToolbarState();
117674136bcSWhindmar Saksit     HRESULT SetDirty();
118674136bcSWhindmar Saksit 
119674136bcSWhindmar Saksit     static HRESULT GetStream(UINT StreamFor, DWORD Stgm, IStream **ppS);
120e9cba537SGiannis Adamopoulos 
121c2c66affSColin Finck public:
122c2c66affSColin Finck     // *** IInputObject specific methods ***
123bb297bc3SKatayama Hirofumi MZ     STDMETHOD(UIActivateIO)(BOOL fActivate, LPMSG lpMsg) override;
124bb297bc3SKatayama Hirofumi MZ     STDMETHOD(HasFocusIO)() override;
125bb297bc3SKatayama Hirofumi MZ     STDMETHOD(TranslateAcceleratorIO)(LPMSG lpMsg) override;
126c2c66affSColin Finck 
127c2c66affSColin Finck     // *** IOleWindow methods ***
128bb297bc3SKatayama Hirofumi MZ     STDMETHOD(GetWindow)(HWND *lphwnd) override;
129bb297bc3SKatayama Hirofumi MZ     STDMETHOD(ContextSensitiveHelp)(BOOL fEnterMode) override;
130c2c66affSColin Finck 
131c2c66affSColin Finck     // *** IDockingWindow methods ***
132bb297bc3SKatayama Hirofumi MZ     STDMETHOD(ShowDW)(BOOL fShow) override;
133bb297bc3SKatayama Hirofumi MZ     STDMETHOD(CloseDW)(DWORD dwReserved) override;
134bb297bc3SKatayama Hirofumi MZ     STDMETHOD(ResizeBorderDW)(LPCRECT prcBorder, IUnknown *punkToolbarSite, BOOL fReserved) override;
135c2c66affSColin Finck 
136c2c66affSColin Finck     // *** IPersist methods ***
137bb297bc3SKatayama Hirofumi MZ     STDMETHOD(GetClassID)(CLSID *pClassID) override;
138c2c66affSColin Finck 
139c2c66affSColin Finck     // *** IPersistStreamInit methods ***
140bb297bc3SKatayama Hirofumi MZ     STDMETHOD(IsDirty)() override;
141bb297bc3SKatayama Hirofumi MZ     STDMETHOD(Load)(IStream *pStm) override;
142bb297bc3SKatayama Hirofumi MZ     STDMETHOD(Save)(IStream *pStm, BOOL fClearDirty) override;
143bb297bc3SKatayama Hirofumi MZ     STDMETHOD(GetSizeMax)(ULARGE_INTEGER *pcbSize) override;
144bb297bc3SKatayama Hirofumi MZ     STDMETHOD(InitNew)() override;
145c2c66affSColin Finck 
146c2c66affSColin Finck     // *** IOleCommandTarget methods ***
147bb297bc3SKatayama Hirofumi MZ     STDMETHOD(QueryStatus)(const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[  ], OLECMDTEXT *pCmdText) override;
148bb297bc3SKatayama Hirofumi MZ     STDMETHOD(Exec)(const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut) override;
149c2c66affSColin Finck 
150c2c66affSColin Finck     // *** IDispatch methods ***
151bb297bc3SKatayama Hirofumi MZ     STDMETHOD(GetTypeInfoCount)(UINT *pctinfo) override;
152bb297bc3SKatayama Hirofumi MZ     STDMETHOD(GetTypeInfo)(UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo) override;
153bb297bc3SKatayama Hirofumi MZ     STDMETHOD(GetIDsOfNames)(REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId) override;
154bb297bc3SKatayama Hirofumi MZ     STDMETHOD(Invoke)(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr) override;
155c2c66affSColin Finck 
156c2c66affSColin Finck     // *** IExplorerToolbar methods ***
157bb297bc3SKatayama Hirofumi MZ     STDMETHOD(SetCommandTarget)(IUnknown *theTarget, GUID *category, long param14) override;
158bb297bc3SKatayama Hirofumi MZ     STDMETHOD(Unknown1)() override;
159bb297bc3SKatayama Hirofumi MZ     STDMETHOD(AddButtons)(const GUID *pguidCmdGroup, long buttonCount, TBBUTTON *buttons) override;
160bb297bc3SKatayama Hirofumi MZ     STDMETHOD(AddString)(const GUID *pguidCmdGroup, HINSTANCE param10, LPCTSTR param14, long *param18) override;
161bb297bc3SKatayama Hirofumi MZ     STDMETHOD(GetButton)(const GUID *pguidCmdGroup, long param10, long param14) override;
162bb297bc3SKatayama Hirofumi MZ     STDMETHOD(GetState)(const GUID *pguidCmdGroup, long commandID, long *theState) override;
163bb297bc3SKatayama Hirofumi MZ     STDMETHOD(SetState)(const GUID *pguidCmdGroup, long commandID, long theState) override;
164bb297bc3SKatayama Hirofumi MZ     STDMETHOD(AddBitmap)(const GUID *pguidCmdGroup, long param10, long buttonCount, TBADDBITMAP *lParam, long *newIndex, COLORREF param20) override;
165bb297bc3SKatayama Hirofumi MZ     STDMETHOD(GetBitmapSize)(long *paramC) override;
166bb297bc3SKatayama Hirofumi MZ     STDMETHOD(SendToolbarMsg)(const GUID *pguidCmdGroup, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *result) override;
167bb297bc3SKatayama Hirofumi MZ     STDMETHOD(SetImageList)(const GUID *pguidCmdGroup, HIMAGELIST param10, HIMAGELIST param14, HIMAGELIST param18) override;
168bb297bc3SKatayama Hirofumi MZ     STDMETHOD(ModifyButton)(const GUID *pguidCmdGroup, long param10, long param14) override;
169c2c66affSColin Finck 
170c2c66affSColin Finck     // *** IShellChangeNotify methods ***
171bb297bc3SKatayama Hirofumi MZ     STDMETHOD(OnChange)(LONG lEvent, LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2) override;
172c2c66affSColin Finck 
173c2c66affSColin Finck     // *** IObjectWithSite methods ***
174bb297bc3SKatayama Hirofumi MZ     STDMETHOD(SetSite)(IUnknown *pUnkSite) override;
175bb297bc3SKatayama Hirofumi MZ     STDMETHOD(GetSite)(REFIID riid, void **ppvSite) override;
176c2c66affSColin Finck 
177c2c66affSColin Finck     // *** IServiceProvider methods ***
178bb297bc3SKatayama Hirofumi MZ     STDMETHOD(QueryService)(REFGUID guidService, REFIID riid, void **ppvObject) override;
179c2c66affSColin Finck 
180c2c66affSColin Finck     // *** IWinEventHandler methods ***
181bb297bc3SKatayama Hirofumi MZ     STDMETHOD(OnWinEvent)(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult) override;
182bb297bc3SKatayama Hirofumi MZ     STDMETHOD(IsWindowOwner)(HWND hWnd) override;
183c2c66affSColin Finck 
184c2c66affSColin Finck     // *** IBandSite specific methods ***
185bb297bc3SKatayama Hirofumi MZ     STDMETHOD(AddBand)(IUnknown *punk) override;
186bb297bc3SKatayama Hirofumi MZ     STDMETHOD(EnumBands)(UINT uBand, DWORD *pdwBandID) override;
187bb297bc3SKatayama Hirofumi MZ     STDMETHOD(QueryBand)(DWORD dwBandID, IDeskBand **ppstb, DWORD *pdwState, LPWSTR pszName, int cchName) override;
188bb297bc3SKatayama Hirofumi MZ     STDMETHOD(SetBandState)(DWORD dwBandID, DWORD dwMask, DWORD dwState) override;
189bb297bc3SKatayama Hirofumi MZ     STDMETHOD(RemoveBand)(DWORD dwBandID) override;
190bb297bc3SKatayama Hirofumi MZ     STDMETHOD(GetBandObject)(DWORD dwBandID, REFIID riid, void **ppv) override;
191bb297bc3SKatayama Hirofumi MZ     STDMETHOD(SetBandSiteInfo)(const BANDSITEINFO *pbsinfo) override;
192bb297bc3SKatayama Hirofumi MZ     STDMETHOD(GetBandSiteInfo)(BANDSITEINFO *pbsinfo) override;
193c2c66affSColin Finck 
194c2c66affSColin Finck     // message handlers
195c2c66affSColin Finck     LRESULT OnTravelBack(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled);
196c2c66affSColin Finck     LRESULT OnTravelForward(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled);
197c2c66affSColin Finck     LRESULT OnUpLevel(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled);
198c2c66affSColin Finck     LRESULT OnSearch(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled);
199c2c66affSColin Finck     LRESULT OnFolders(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled);
200c2c66affSColin Finck     LRESULT OnForwardToCommandTarget(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled);
201c2c66affSColin Finck     LRESULT OnMenuDropDown(UINT idControl, NMHDR *pNMHDR, BOOL &bHandled);
202c2c66affSColin Finck     LRESULT OnQueryInsert(UINT idControl, NMHDR *pNMHDR, BOOL &bHandled);
203c2c66affSColin Finck     LRESULT OnQueryDelete(UINT idControl, NMHDR *pNMHDR, BOOL &bHandled);
204c2c66affSColin Finck     LRESULT OnNavigateCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
205c2c66affSColin Finck     LRESULT OnContextMenu(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
206c2c66affSColin Finck     LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
207c2c66affSColin Finck     LRESULT OnSetCursor(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
208c2c66affSColin Finck     LRESULT OnTipText(UINT idControl, NMHDR *pNMHDR, BOOL &bHandled);
209c2c66affSColin Finck     LRESULT OnCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
210c2c66affSColin Finck     LRESULT OnNotify(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
211c2c66affSColin Finck     LRESULT OnLDown(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
212c2c66affSColin Finck     LRESULT OnLUp(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
213c2c66affSColin Finck     LRESULT OnMouseMove(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
214c2c66affSColin Finck     LRESULT OnWinIniChange(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
21543b3dc20SCarl J. Bialorucki     LRESULT OnSettingsChange(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
216c2c66affSColin Finck 
217c2c66affSColin Finck     BEGIN_MSG_MAP(CInternetToolbar)
218c2c66affSColin Finck         COMMAND_ID_HANDLER(IDM_GOTO_BACK, OnTravelBack)
219c2c66affSColin Finck         COMMAND_ID_HANDLER(IDM_GOTO_FORWARD, OnTravelForward)
220c2c66affSColin Finck         COMMAND_ID_HANDLER(IDM_GOTO_UPONELEVEL, OnUpLevel)
221c2c66affSColin Finck         COMMAND_ID_HANDLER(gSearchCommandID, OnSearch)
222c2c66affSColin Finck         COMMAND_ID_HANDLER(gFoldersCommandID, OnFolders)
223c2c66affSColin Finck         COMMAND_RANGE_HANDLER(0x7000, 0x7fff, OnForwardToCommandTarget)
224c2c66affSColin Finck         NOTIFY_HANDLER(0, TBN_DROPDOWN, OnMenuDropDown)
225c2c66affSColin Finck         NOTIFY_HANDLER(0, TBN_QUERYINSERT, OnQueryInsert)
226c2c66affSColin Finck         NOTIFY_HANDLER(0, TBN_QUERYDELETE, OnQueryDelete)
227c2c66affSColin Finck         MESSAGE_HANDLER(WM_COMMAND, OnCommand)
228c2c66affSColin Finck         MESSAGE_HANDLER(WM_CONTEXTMENU, OnContextMenu)
229c2c66affSColin Finck         MESSAGE_HANDLER(WM_SIZE, OnSize)
230c2c66affSColin Finck         MESSAGE_HANDLER(WM_SETCURSOR, OnSetCursor)
231c2c66affSColin Finck         NOTIFY_CODE_HANDLER(TTN_NEEDTEXTW, OnTipText)
232c2c66affSColin Finck         MESSAGE_HANDLER(WM_NOTIFY, OnNotify)
233c2c66affSColin Finck         MESSAGE_HANDLER(WM_LBUTTONDOWN, OnLDown)
234c2c66affSColin Finck         MESSAGE_HANDLER(WM_LBUTTONUP, OnLUp)
235c2c66affSColin Finck         MESSAGE_HANDLER(WM_MOUSEMOVE, OnMouseMove)
236c2c66affSColin Finck         MESSAGE_HANDLER(WM_WININICHANGE, OnWinIniChange)
23743b3dc20SCarl J. Bialorucki         MESSAGE_HANDLER(BWM_SETTINGCHANGE, OnSettingsChange)
238c2c66affSColin Finck     END_MSG_MAP()
239c2c66affSColin Finck 
240c2c66affSColin Finck     DECLARE_REGISTRY_RESOURCEID(IDR_INTERNETTOOLBAR)
241c2c66affSColin Finck     DECLARE_NOT_AGGREGATABLE(CInternetToolbar)
242c2c66affSColin Finck 
243c2c66affSColin Finck     DECLARE_PROTECT_FINAL_CONSTRUCT()
244c2c66affSColin Finck 
245c2c66affSColin Finck     BEGIN_COM_MAP(CInternetToolbar)
246c2c66affSColin Finck         COM_INTERFACE_ENTRY_IID(IID_IInputObject, IInputObject)
247c2c66affSColin Finck         COM_INTERFACE_ENTRY_IID(IID_IOleWindow, IOleWindow)
248c2c66affSColin Finck         COM_INTERFACE_ENTRY_IID(IID_IDockingWindow, IDockingWindow)
249c2c66affSColin Finck         COM_INTERFACE_ENTRY_IID(IID_IPersist, IPersist)
250c2c66affSColin Finck //        COM_INTERFACE_ENTRY_IID(IID_IPersistStream, IPersistStream)
251c2c66affSColin Finck         COM_INTERFACE_ENTRY_IID(IID_IPersistStreamInit, IPersistStreamInit)
252c2c66affSColin Finck         COM_INTERFACE_ENTRY_IID(IID_IOleCommandTarget, IOleCommandTarget)
253c2c66affSColin Finck         COM_INTERFACE_ENTRY_IID(IID_IDispatch, IDispatch)
254c2c66affSColin Finck         COM_INTERFACE_ENTRY_IID(IID_IExplorerToolbar, IExplorerToolbar)
255c2c66affSColin Finck         COM_INTERFACE_ENTRY_IID(IID_IShellChangeNotify, IShellChangeNotify)
256c2c66affSColin Finck         COM_INTERFACE_ENTRY_IID(IID_IObjectWithSite, IObjectWithSite)
257c2c66affSColin Finck         COM_INTERFACE_ENTRY_IID(IID_IServiceProvider, IServiceProvider)
258c2c66affSColin Finck         COM_INTERFACE_ENTRY_IID(IID_IWinEventHandler, IWinEventHandler)
259c2c66affSColin Finck         COM_INTERFACE_ENTRY_IID(IID_IBandSite, IBandSite)
260c2c66affSColin Finck     END_COM_MAP()
261c2c66affSColin Finck };
262