#ifndef _DBAPP_H #define _DBAPP_H class CDeskBarApp : public CDeskBar ,public IContextMenu3 { public: STDMETHOD(QueryInterface)(REFIID riid, LPVOID * ppvObj); STDMETHODIMP_(ULONG) AddRef(void) {return CDeskBar::AddRef();}; STDMETHODIMP_(ULONG) Release(void) { return CDeskBar::Release();}; STDMETHOD(QueryService)(REFGUID guidService, REFIID riid, void **ppvObj); // *** IInputObject methods *** virtual STDMETHODIMP TranslateAcceleratorIO(LPMSG lpMsg); // *** IPersistStreamInit methods *** virtual STDMETHODIMP GetClassID(CLSID *pClassID); virtual STDMETHODIMP IsDirty(void); virtual STDMETHODIMP Load(IStream *pStm); virtual STDMETHODIMP Save(IStream *pStm, BOOL fClearDirty); virtual STDMETHODIMP GetSizeMax(ULARGE_INTEGER *pcbSize); virtual STDMETHODIMP InitNew(void); // *** IPersistPropertyBag *** virtual HRESULT STDMETHODCALLTYPE Load(IPropertyBag *pPropBag, IErrorLog *pErrorLog); // *** IContextMenu3 methods *** STDMETHOD(QueryContextMenu)(HMENU hmenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags); STDMETHOD(InvokeCommand)(LPCMINVOKECOMMANDINFO lpici); STDMETHOD(GetCommandString)(UINT_PTR idCmd, UINT uType, UINT * pwReserved, LPSTR pszName, UINT cchMax); STDMETHOD(HandleMenuMsg)(UINT uMsg, WPARAM wParam, LPARAM lParam); STDMETHOD(HandleMenuMsg2)(UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT* plres); // *** IOleCommandTarget methods *** virtual STDMETHODIMP Exec(const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANTARG *pvarargIn, VARIANTARG *pvarargOut); protected: virtual void _SetModeSide(UINT eMode, UINT uSide, HMONITOR hMon, BOOL fNoMerge); virtual void _UpdateCaptionTitle(); virtual void _NotifyModeChange(DWORD dwMode); virtual LRESULT v_WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); void _LeaveSide(); virtual ~CDeskBarApp(); void _CreateBandSiteMenu(); BOOL _OnCloseBar(BOOL fConfirm); // Override dockbar's _OnCloseBar to add UI confirmation HRESULT _MergeSide(IBandSite *pdbDst); IContextMenu3* _pcm; // this class explicitely knows about CBandSite. this is the distinction between deskbar and dbapp. CBandSite* _pbs; UINT _eInitLoaded:2; int _idCmdDeskBarFirst; friend HRESULT DeskBarApp_Create(IUnknown** ppunk); }; extern HRESULT DeskBarApp_Create(IUnknown** ppunk, IUnknown** ppbs); #endif // _DBAPP_H