windows-nt/Source/XPSP1/NT/shell/explorer/taskbar.h
2020-09-26 16:20:57 +08:00

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