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

bandsite.h
Go to the documentation of this file.
00001 /*
00002  *  Rebar band site
00003  *
00004  *  Copyright 2007  Hervé Poussineau
00005  *  Copyright 2009  Andrew Hill
00006  *
00007  * This library is free software; you can redistribute it and/or
00008  * modify it under the terms of the GNU Lesser General Public
00009  * License as published by the Free Software Foundation; either
00010  * version 2.1 of the License, or (at your option) any later version.
00011  *
00012  * This library is distributed in the hope that it will be useful,
00013  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00014  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00015  * Lesser General Public License for more details.
00016  *
00017  * You should have received a copy of the GNU Lesser General Public
00018  * License along with this library; if not, write to the Free Software
00019  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
00020  */
00021 
00022 #pragma once
00023 
00024 class CBandSiteBase :
00025     public CComObjectRootEx<CComMultiThreadModelNoCS>,
00026     public IBandSite,
00027     public IWinEventHandler,
00028     public IDeskBarClient,
00029     public IOleCommandTarget,
00030     public IInputObject,
00031     public IInputObjectSite,
00032     public IServiceProvider,
00033     public IPersistStream,
00034     public IDropTarget,
00035     public IBandSiteHelper
00036 {
00037 private:
00038     struct BandObject
00039     {
00040         IDeskBand                           *DeskBand;
00041         IOleWindow                          *OleWindow;
00042         IWinEventHandler                    *WndEvtHandler;
00043         DESKBANDINFO                        dbi;
00044     };
00045 
00046     LONG                                    fBandsCount;
00047     LONG                                    fBandsAllocated;
00048     struct BandObject                       *fBands;
00049     HWND                                    fRebarWindow;
00050     CComPtr<IOleWindow>                     fOleWindow;
00051 public:
00052     CBandSiteBase();
00053     ~CBandSiteBase();
00054 
00055     // *** IBandSite methods ***
00056     virtual HRESULT STDMETHODCALLTYPE AddBand(IUnknown *punk);
00057     virtual HRESULT STDMETHODCALLTYPE EnumBands(UINT uBand, DWORD *pdwBandID);
00058     virtual HRESULT STDMETHODCALLTYPE QueryBand(DWORD dwBandID, IDeskBand **ppstb, DWORD *pdwState, LPWSTR pszName, int cchName);
00059     virtual HRESULT STDMETHODCALLTYPE SetBandState(DWORD dwBandID, DWORD dwMask, DWORD dwState);
00060     virtual HRESULT STDMETHODCALLTYPE RemoveBand(DWORD dwBandID);
00061     virtual HRESULT STDMETHODCALLTYPE GetBandObject(DWORD dwBandID, REFIID riid, void **ppv);
00062     virtual HRESULT STDMETHODCALLTYPE SetBandSiteInfo(const BANDSITEINFO *pbsinfo);
00063     virtual HRESULT STDMETHODCALLTYPE GetBandSiteInfo(BANDSITEINFO *pbsinfo);
00064 
00065     // *** IWinEventHandler methods ***
00066     virtual HRESULT STDMETHODCALLTYPE OnWinEvent(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult);
00067     virtual HRESULT STDMETHODCALLTYPE IsWindowOwner(HWND hWnd);
00068 
00069     // *** IOleWindow methods ***
00070     virtual HRESULT STDMETHODCALLTYPE GetWindow(HWND *lphwnd);
00071     virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(BOOL fEnterMode);
00072 
00073     // *** IDeskBarClient methods ***
00074     virtual HRESULT STDMETHODCALLTYPE SetDeskBarSite(IUnknown *punkSite);
00075     virtual HRESULT STDMETHODCALLTYPE SetModeDBC(DWORD dwMode);
00076     virtual HRESULT STDMETHODCALLTYPE UIActivateDBC(DWORD dwState);
00077     virtual HRESULT STDMETHODCALLTYPE GetSize(DWORD dwWhich, LPRECT prc);
00078 
00079     // *** IOleCommandTarget methods ***
00080     virtual HRESULT STDMETHODCALLTYPE QueryStatus(const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[  ], OLECMDTEXT *pCmdText);
00081     virtual HRESULT STDMETHODCALLTYPE Exec(const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut);
00082 
00083     // *** IInputObject methods ***
00084     virtual HRESULT STDMETHODCALLTYPE UIActivateIO(BOOL fActivate, LPMSG lpMsg);
00085     virtual HRESULT STDMETHODCALLTYPE HasFocusIO();
00086     virtual HRESULT STDMETHODCALLTYPE TranslateAcceleratorIO(LPMSG lpMsg);
00087 
00088     // *** IInputObjectSite methods ***
00089     virtual HRESULT STDMETHODCALLTYPE OnFocusChangeIS(struct IUnknown *paramC, int param10);
00090 
00091     // *** IServiceProvider methods ***
00092     virtual HRESULT STDMETHODCALLTYPE QueryService(REFGUID guidService, REFIID riid, void **ppvObject);
00093 
00094     // *** IPersist methods ***
00095     virtual HRESULT STDMETHODCALLTYPE GetClassID(CLSID *pClassID);
00096 
00097     // *** IPersistStream methods ***
00098     virtual HRESULT STDMETHODCALLTYPE IsDirty();
00099     virtual HRESULT STDMETHODCALLTYPE Load(IStream *pStm);
00100     virtual HRESULT STDMETHODCALLTYPE Save(IStream *pStm, BOOL fClearDirty);
00101     virtual HRESULT STDMETHODCALLTYPE GetSizeMax(ULARGE_INTEGER *pcbSize);
00102 
00103     // *** IDropTarget methods ***
00104     virtual HRESULT STDMETHODCALLTYPE DragEnter(IDataObject *pDataObj, DWORD grfKeyState, POINTL pt, DWORD *pdwEffect);
00105     virtual HRESULT STDMETHODCALLTYPE DragOver(DWORD grfKeyState, POINTL pt, DWORD *pdwEffect);
00106     virtual HRESULT STDMETHODCALLTYPE DragLeave();
00107     virtual HRESULT STDMETHODCALLTYPE Drop(IDataObject *pDataObj, DWORD grfKeyState, POINTL pt, DWORD *pdwEffect);
00108 
00109     // *** IBandSiteHelper methods ***
00110     virtual HRESULT STDMETHODCALLTYPE LoadFromStreamBS(IStream *, const GUID &, void **);
00111     virtual HRESULT STDMETHODCALLTYPE SaveToStreamBS(IUnknown *, IStream *);
00112 
00113 private:
00114     UINT GetBandID(struct BandObject *Band);
00115     struct BandObject *GetBandByID(DWORD dwBandID);
00116     void FreeBand(struct BandObject *Band);
00117     DWORD GetBandSiteViewMode();
00118     VOID BuildRebarBandInfo(struct BandObject *Band, REBARBANDINFOW *prbi);
00119     HRESULT UpdateSingleBand(struct BandObject *Band);
00120     HRESULT UpdateAllBands();
00121     HRESULT UpdateBand(DWORD dwBandID);
00122     struct BandObject *GetBandFromHwnd(HWND hwnd);
00123 
00124 BEGIN_COM_MAP(CBandSiteBase)
00125     COM_INTERFACE_ENTRY_IID(IID_IBandSite, IBandSite)
00126     COM_INTERFACE_ENTRY_IID(IID_IWinEventHandler, IWinEventHandler)
00127     COM_INTERFACE_ENTRY_IID(IID_IOleWindow, IOleWindow)
00128     COM_INTERFACE_ENTRY_IID(IID_IDeskBarClient, IDeskBarClient)
00129     COM_INTERFACE_ENTRY_IID(IID_IOleCommandTarget, IOleCommandTarget)
00130     COM_INTERFACE_ENTRY_IID(IID_IInputObject, IInputObject)
00131     COM_INTERFACE_ENTRY_IID(IID_IInputObjectSite, IInputObjectSite)
00132     COM_INTERFACE_ENTRY_IID(IID_IServiceProvider, IServiceProvider)
00133     COM_INTERFACE_ENTRY_IID(IID_IPersist, IPersist)
00134     COM_INTERFACE_ENTRY_IID(IID_IPersistStream, IPersistStream)
00135     COM_INTERFACE_ENTRY_IID(IID_IDropTarget, IDropTarget)
00136     COM_INTERFACE_ENTRY_IID(IID_IBandSiteHelper, IBandSiteHelper)
00137 END_COM_MAP()
00138 };
00139 
00140 class CBandSite :
00141     public CComCoClass<CBandSite, &CLSID_RebarBandSite>,
00142     public CBandSiteBase
00143 {
00144 public:
00145 
00146 DECLARE_REGISTRY_RESOURCEID(IDR_BANDSITE)
00147 DECLARE_NOT_AGGREGATABLE(CBandSite)
00148 
00149 DECLARE_PROTECT_FINAL_CONSTRUCT()
00150 
00151 };

Generated on Sun May 27 2012 04:22:53 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.