83 lines
2.6 KiB
C
83 lines
2.6 KiB
C
|
#include "taskband.h"
|
||
|
#include "tray.h"
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
|
||
|
class CSimpleOleWindow : public IDeskBar // public IOleWindow,
|
||
|
{
|
||
|
public:
|
||
|
// *** IUnknown ***
|
||
|
virtual STDMETHODIMP QueryInterface(REFIID riid, LPVOID * ppvObj);
|
||
|
virtual STDMETHODIMP_(ULONG) AddRef(void);
|
||
|
virtual STDMETHODIMP_(ULONG) Release(void);
|
||
|
|
||
|
// *** IDeskBar ***
|
||
|
STDMETHOD(OnPosRectChangeDB)(THIS_ LPRECT prc)
|
||
|
{ ASSERT(0); return E_NOTIMPL; }
|
||
|
STDMETHOD(SetClient) (THIS_ IUnknown* punkClient)
|
||
|
{ return E_NOTIMPL; }
|
||
|
STDMETHOD(GetClient) (THIS_ IUnknown** ppunkClient)
|
||
|
{ return E_NOTIMPL; }
|
||
|
|
||
|
// *** IOleWindow methods ***
|
||
|
virtual STDMETHODIMP GetWindow(HWND * lphwnd);
|
||
|
virtual STDMETHODIMP ContextSensitiveHelp(BOOL fEnterMode) { return E_NOTIMPL; }
|
||
|
|
||
|
CSimpleOleWindow(HWND hwnd);
|
||
|
|
||
|
protected:
|
||
|
|
||
|
virtual ~CSimpleOleWindow();
|
||
|
|
||
|
UINT _cRef;
|
||
|
HWND _hwnd;
|
||
|
};
|
||
|
|
||
|
|
||
|
class CTaskBar : public CSimpleOleWindow
|
||
|
, public IContextMenu
|
||
|
, public IServiceProvider
|
||
|
, public IRestrict
|
||
|
{
|
||
|
public:
|
||
|
// *** IUnknown ***
|
||
|
virtual STDMETHODIMP QueryInterface(REFIID riid, void ** ppvObj);
|
||
|
virtual STDMETHODIMP_(ULONG) AddRef(void) { return CSimpleOleWindow::AddRef();};
|
||
|
virtual STDMETHODIMP_(ULONG) Release(void){ return CSimpleOleWindow::Release();};
|
||
|
|
||
|
// *** IContextMenu 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);
|
||
|
|
||
|
// *** IServiceProvider methods ***
|
||
|
virtual STDMETHODIMP QueryService(REFGUID guidService, REFIID riid, void ** ppvObj);
|
||
|
|
||
|
// *** IRestrict ***
|
||
|
virtual STDMETHODIMP IsRestricted(const GUID * pguidID, DWORD dwRestrictAction, VARIANT * pvarArgs, DWORD * pdwRestrictionResult);
|
||
|
|
||
|
// *** CSimpleOleWindow - IDeskBar ***
|
||
|
STDMETHOD(OnPosRectChangeDB)(LPRECT prc);
|
||
|
|
||
|
CTaskBar();
|
||
|
HWND _hwndRebar;
|
||
|
|
||
|
protected:
|
||
|
//virtual ~CTaskBar();
|
||
|
|
||
|
BOOL _fRestrictionsInited; // Have we read in the restrictions?
|
||
|
BOOL _fRestrictDDClose; // Restrict: Add, Close, Drag & Drop
|
||
|
BOOL _fRestrictMove; // Restrict: Move
|
||
|
};
|
||
|
|
||
|
#endif
|