Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenbandsite.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
1.7.6.1
|