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