Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygeninternettoolbar.h
Go to the documentation of this file.
00001 /* 00002 * ReactOS Explorer 00003 * 00004 * Copyright 2009 Andrew Hill <ash77 at domain reactos.org> 00005 * 00006 * This library is free software; you can redistribute it and/or 00007 * modify it under the terms of the GNU Lesser General Public 00008 * License as published by the Free Software Foundation; either 00009 * version 2.1 of the License, or (at your option) any later version. 00010 * 00011 * This library is distributed in the hope that it will be useful, 00012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00014 * Lesser General Public License for more details. 00015 * 00016 * You should have received a copy of the GNU Lesser General Public 00017 * License along with this library; if not, write to the Free Software 00018 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00019 */ 00020 00021 #pragma once 00022 00023 static const int gBackCommandID = 0xa121; 00024 static const int gForwardCommandID = 0xa122; 00025 static const int gUpLevelCommandID = 0xa022; 00026 static const int gSearchCommandID = 1003; 00027 static const int gFoldersCommandID = 1004; 00028 static const int gMoveToCommandID = 0x701f; 00029 static const int gCopyToCommandID = 0x701e; 00030 static const int gDeleteCommandID = 0x7011; 00031 static const int gUndoCommandID = 0x701b; 00032 static const int gViewsCommandID = 0x7031; 00033 static const int gStopCommandID = 1010; 00034 static const int gRefreshCommandID = 0xa220; 00035 static const int gHomeCommandID = 1012; 00036 static const int gMapDriveCommandID = 41089; 00037 static const int gDisconnectCommandID = 41090; 00038 static const int gFavoritesCommandID = 1015; 00039 static const int gHistoryCommandID = 1016; 00040 static const int gFullScreenCommandID = 1017; 00041 static const int gPropertiesCommandID = 0x7013; 00042 static const int gCutCommandID = 0x7018; 00043 static const int gCopyCommandID = 0x7019; 00044 static const int gPasteCommandID = 0x701a; 00045 static const int gFolderOptionsCommandID = 41251; 00046 00047 class CMenuCallback : 00048 public CComObjectRootEx<CComMultiThreadModelNoCS>, 00049 public IShellMenuCallback 00050 { 00051 private: 00052 CComPtr<IShellMenu> fFavoritesMenu; 00053 public: 00054 CMenuCallback(); 00055 ~CMenuCallback(); 00056 00057 HRESULT STDMETHODCALLTYPE GetObject(LPSMDATA psmd, REFIID riid, void **ppvObject); 00058 public: 00059 // *** IShellMenuCallback methods *** 00060 virtual HRESULT STDMETHODCALLTYPE CallbackSM(LPSMDATA psmd, UINT uMsg, WPARAM wParam, LPARAM lParam); 00061 00062 BEGIN_COM_MAP(CMenuCallback) 00063 COM_INTERFACE_ENTRY_IID(IID_IShellMenuCallback, IShellMenuCallback) 00064 END_COM_MAP() 00065 }; 00066 00067 class CInternetToolbar : 00068 public CWindowImpl<CInternetToolbar, CWindow, CControlWinTraits>, 00069 public CComCoClass<CInternetToolbar, &CLSID_InternetToolbar>, 00070 public CComObjectRootEx<CComMultiThreadModelNoCS>, 00071 public IInputObject, 00072 public IDockingWindow, 00073 public IPersistStreamInit, 00074 public IOleCommandTarget, 00075 public IDispatch, 00076 public IExplorerToolbar, 00077 public IShellChangeNotify, 00078 public IObjectWithSite, 00079 public IServiceProvider, 00080 public IWinEventHandler, 00081 public IBandSite 00082 { 00083 public: 00084 CComPtr<IUnknown> fSite; // our site 00085 HWND fMainReBar; // rebar for top of window 00086 bool fLocked; // is bar locked to prevent changes? 00087 CComPtr<IShellMenu> fMenuBar; // the menu rebar 00088 HWND fMenuBandWindow; 00089 HWND fNavigationWindow; 00090 CComPtr<IUnknown> fLogoBar; // the reactos logo 00091 CComPtr<IUnknown> fControlsBar; // navigation controls 00092 CComPtr<IUnknown> fNavigationBar; // address bar 00093 CComObject<CMenuCallback> fMenuCallback; 00094 CComPtr<IOleCommandTarget> fCommandTarget; 00095 GUID fCommandCategory; 00096 HWND fToolbarWindow; 00097 DWORD fAdviseCookie; 00098 CComPtr<IBandProxy> fBandProxy; 00099 public: 00100 CInternetToolbar(); 00101 ~CInternetToolbar(); 00102 void AddDockItem(IUnknown *newItem, int bandID, int flags); 00103 HRESULT ReserveBorderSpace(); 00104 HRESULT CreateMenuBar(IShellMenu **menuBar); 00105 HRESULT CreateBrandBand(IUnknown **logoBar); 00106 HRESULT CreateToolsBar(IUnknown **toolsBar); 00107 HRESULT CreateAddressBand(IUnknown **toolsBar); 00108 HRESULT LockUnlockToolbars(bool locked); 00109 HRESULT CommandStateChanged(bool newValue, int commandID); 00110 HRESULT CreateAndInitBandProxy(); 00111 public: 00112 // *** IInputObject specific methods *** 00113 virtual HRESULT STDMETHODCALLTYPE UIActivateIO(BOOL fActivate, LPMSG lpMsg); 00114 virtual HRESULT STDMETHODCALLTYPE HasFocusIO(); 00115 virtual HRESULT STDMETHODCALLTYPE TranslateAcceleratorIO(LPMSG lpMsg); 00116 00117 // *** IOleWindow methods *** 00118 virtual HRESULT STDMETHODCALLTYPE GetWindow(HWND *lphwnd); 00119 virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(BOOL fEnterMode); 00120 00121 // *** IDockingWindow methods *** 00122 virtual HRESULT STDMETHODCALLTYPE ShowDW(BOOL fShow); 00123 virtual HRESULT STDMETHODCALLTYPE CloseDW(DWORD dwReserved); 00124 virtual HRESULT STDMETHODCALLTYPE ResizeBorderDW(LPCRECT prcBorder, IUnknown *punkToolbarSite, BOOL fReserved); 00125 00126 // *** IPersist methods *** 00127 virtual HRESULT STDMETHODCALLTYPE GetClassID(CLSID *pClassID); 00128 00129 // *** IPersistStreamInit methods *** 00130 virtual HRESULT STDMETHODCALLTYPE IsDirty(); 00131 virtual HRESULT STDMETHODCALLTYPE Load(IStream *pStm); 00132 virtual HRESULT STDMETHODCALLTYPE Save(IStream *pStm, BOOL fClearDirty); 00133 virtual HRESULT STDMETHODCALLTYPE GetSizeMax(ULARGE_INTEGER *pcbSize); 00134 virtual HRESULT STDMETHODCALLTYPE InitNew(); 00135 00136 // *** IOleCommandTarget methods *** 00137 virtual HRESULT STDMETHODCALLTYPE QueryStatus(const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[ ], OLECMDTEXT *pCmdText); 00138 virtual HRESULT STDMETHODCALLTYPE Exec(const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut); 00139 00140 // *** IDispatch methods *** 00141 virtual HRESULT STDMETHODCALLTYPE GetTypeInfoCount(UINT *pctinfo); 00142 virtual HRESULT STDMETHODCALLTYPE GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo); 00143 virtual HRESULT STDMETHODCALLTYPE GetIDsOfNames(REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId); 00144 virtual HRESULT STDMETHODCALLTYPE Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr); 00145 00146 // *** IExplorerToolbar methods *** 00147 virtual HRESULT STDMETHODCALLTYPE SetCommandTarget(IUnknown *theTarget, GUID *category, long param14); 00148 virtual HRESULT STDMETHODCALLTYPE Unknown1(); 00149 virtual HRESULT STDMETHODCALLTYPE AddButtons(const GUID *pguidCmdGroup, long buttonCount, TBBUTTON *buttons); 00150 virtual HRESULT STDMETHODCALLTYPE AddString(const GUID *pguidCmdGroup, HINSTANCE param10, LPCTSTR param14, long *param18); 00151 virtual HRESULT STDMETHODCALLTYPE GetButton(const GUID *pguidCmdGroup, long param10, long param14); 00152 virtual HRESULT STDMETHODCALLTYPE GetState(const GUID *pguidCmdGroup, long commandID, long *theState); 00153 virtual HRESULT STDMETHODCALLTYPE SetState(const GUID *pguidCmdGroup, long commandID, long theState); 00154 virtual HRESULT STDMETHODCALLTYPE AddBitmap(const GUID *pguidCmdGroup, long param10, long buttonCount, TBADDBITMAP *lParam, long *newIndex, COLORREF param20); 00155 virtual HRESULT STDMETHODCALLTYPE GetBitmapSize(long *paramC); 00156 virtual HRESULT STDMETHODCALLTYPE SendToolbarMsg(const GUID *pguidCmdGroup, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *result); 00157 virtual HRESULT STDMETHODCALLTYPE SetImageList(const GUID *pguidCmdGroup, HIMAGELIST param10, HIMAGELIST param14, HIMAGELIST param18); 00158 virtual HRESULT STDMETHODCALLTYPE ModifyButton(const GUID *pguidCmdGroup, long param10, long param14); 00159 00160 // *** IShellChangeNotify methods *** 00161 virtual HRESULT STDMETHODCALLTYPE OnChange(LONG lEvent, LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2); 00162 00163 // *** IObjectWithSite methods *** 00164 virtual HRESULT STDMETHODCALLTYPE SetSite(IUnknown *pUnkSite); 00165 virtual HRESULT STDMETHODCALLTYPE GetSite(REFIID riid, void **ppvSite); 00166 00167 // *** IServiceProvider methods *** 00168 virtual HRESULT STDMETHODCALLTYPE QueryService(REFGUID guidService, REFIID riid, void **ppvObject); 00169 00170 // *** IWinEventHandler methods *** 00171 virtual HRESULT STDMETHODCALLTYPE OnWinEvent(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult); 00172 virtual HRESULT STDMETHODCALLTYPE IsWindowOwner(HWND hWnd); 00173 00174 // *** IBandSite specific methods *** 00175 virtual HRESULT STDMETHODCALLTYPE AddBand(IUnknown *punk); 00176 virtual HRESULT STDMETHODCALLTYPE EnumBands(UINT uBand, DWORD *pdwBandID); 00177 virtual HRESULT STDMETHODCALLTYPE QueryBand(DWORD dwBandID, IDeskBand **ppstb, DWORD *pdwState, LPWSTR pszName, int cchName); 00178 virtual HRESULT STDMETHODCALLTYPE SetBandState(DWORD dwBandID, DWORD dwMask, DWORD dwState); 00179 virtual HRESULT STDMETHODCALLTYPE RemoveBand(DWORD dwBandID); 00180 virtual HRESULT STDMETHODCALLTYPE GetBandObject(DWORD dwBandID, REFIID riid, void **ppv); 00181 virtual HRESULT STDMETHODCALLTYPE SetBandSiteInfo(const BANDSITEINFO *pbsinfo); 00182 virtual HRESULT STDMETHODCALLTYPE GetBandSiteInfo(BANDSITEINFO *pbsinfo); 00183 00184 // message handlers 00185 LRESULT OnTravelBack(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled); 00186 LRESULT OnTravelForward(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled); 00187 LRESULT OnUpLevel(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled); 00188 LRESULT OnSearch(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled); 00189 LRESULT OnFolders(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled); 00190 LRESULT OnForwardToCommandTarget(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled); 00191 LRESULT OnMenuDropDown(UINT idControl, NMHDR *pNMHDR, BOOL &bHandled); 00192 LRESULT OnQueryInsert(UINT idControl, NMHDR *pNMHDR, BOOL &bHandled); 00193 LRESULT OnQueryDelete(UINT idControl, NMHDR *pNMHDR, BOOL &bHandled); 00194 LRESULT OnNavigateCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled); 00195 LRESULT OnContextMenu(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled); 00196 LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled); 00197 LRESULT OnSetCursor(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled); 00198 LRESULT OnTipText(UINT idControl, NMHDR *pNMHDR, BOOL &bHandled); 00199 LRESULT OnNotify(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled); 00200 00201 BEGIN_MSG_MAP(CInternetToolbar) 00202 COMMAND_ID_HANDLER(gBackCommandID, OnTravelBack) 00203 COMMAND_ID_HANDLER(gForwardCommandID, OnTravelForward) 00204 COMMAND_ID_HANDLER(gUpLevelCommandID, OnUpLevel) 00205 COMMAND_ID_HANDLER(gSearchCommandID, OnSearch) 00206 COMMAND_ID_HANDLER(gFoldersCommandID, OnFolders) 00207 COMMAND_RANGE_HANDLER(0x7000, 0x7fff, OnForwardToCommandTarget) 00208 NOTIFY_HANDLER(0, TBN_DROPDOWN, OnMenuDropDown) 00209 NOTIFY_HANDLER(0, TBN_QUERYINSERT, OnQueryInsert) 00210 NOTIFY_HANDLER(0, TBN_QUERYDELETE, OnQueryDelete) 00211 MESSAGE_HANDLER(WM_COMMAND, OnNavigateCommand) 00212 MESSAGE_HANDLER(WM_CONTEXTMENU, OnContextMenu) 00213 MESSAGE_HANDLER(WM_SIZE, OnSize) 00214 MESSAGE_HANDLER(WM_SETCURSOR, OnSetCursor) 00215 NOTIFY_CODE_HANDLER(TTN_NEEDTEXTW, OnTipText) 00216 MESSAGE_HANDLER(WM_NOTIFY, OnNotify) 00217 END_MSG_MAP() 00218 00219 DECLARE_REGISTRY_RESOURCEID(IDR_INTERNETTOOLBAR) 00220 DECLARE_NOT_AGGREGATABLE(CInternetToolbar) 00221 00222 DECLARE_PROTECT_FINAL_CONSTRUCT() 00223 00224 BEGIN_COM_MAP(CInternetToolbar) 00225 COM_INTERFACE_ENTRY_IID(IID_IInputObject, IInputObject) 00226 COM_INTERFACE_ENTRY_IID(IID_IOleWindow, IOleWindow) 00227 COM_INTERFACE_ENTRY_IID(IID_IDockingWindow, IDockingWindow) 00228 COM_INTERFACE_ENTRY_IID(IID_IPersist, IPersist) 00229 // COM_INTERFACE_ENTRY_IID(IID_IPersistStream, IPersistStream) 00230 COM_INTERFACE_ENTRY_IID(IID_IPersistStreamInit, IPersistStreamInit) 00231 COM_INTERFACE_ENTRY_IID(IID_IOleCommandTarget, IOleCommandTarget) 00232 COM_INTERFACE_ENTRY_IID(IID_IDispatch, IDispatch) 00233 COM_INTERFACE_ENTRY_IID(IID_IExplorerToolbar, IExplorerToolbar) 00234 COM_INTERFACE_ENTRY_IID(IID_IShellChangeNotify, IShellChangeNotify) 00235 COM_INTERFACE_ENTRY_IID(IID_IObjectWithSite, IObjectWithSite) 00236 COM_INTERFACE_ENTRY_IID(IID_IServiceProvider, IServiceProvider) 00237 COM_INTERFACE_ENTRY_IID(IID_IWinEventHandler, IWinEventHandler) 00238 COM_INTERFACE_ENTRY_IID(IID_IBandSite, IBandSite) 00239 END_COM_MAP() 00240 }; Generated on Sat May 26 2012 04:21:26 for ReactOS by
1.7.6.1
|