ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

internettoolbar.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 doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.