Something went wrong. Try again.
Reactos
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141/* * PROJECT: ReactOS shell extensions * LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later) * PURPOSE: Quick Launch Toolbar (Taskbar Shell Extension) * COPYRIGHT: Copyright Shriraj Sawant a.k.a SR13 <sr.official@hotmail.com> */#pragma once
extern const GUID CLSID_QuickLaunchBand;
// Component category registrationHRESULT RegisterComCat();HRESULT UnregisterComCat();
// COM class for quick launchclass CQuickLaunchBand : public CComCoClass<CQuickLaunchBand, &CLSID_QuickLaunchBand>, public CComObjectRootEx<CComMultiThreadModelNoCS>, public IObjectWithSite, public IDeskBand, public IPersistStream, public IWinEventHandler, public IOleCommandTarget, public IContextMenu{ HWND m_hWndBro; CComPtr<IUnknown> m_punkISFB;
public: CQuickLaunchBand(); virtual ~CQuickLaunchBand();
STDMETHOD(ContainsWindow)(IN HWND hWnd);
// ATL construct
HRESULT FinalConstruct();
// IObjectWithSite
STDMETHOD(GetSite)( IN REFIID riid, OUT void **ppvSite) override;
STDMETHOD(SetSite)(IN IUnknown *pUnkSite) override;
// IDeskBand
STDMETHOD(GetWindow)(OUT HWND *phwnd) override;
STDMETHOD(ContextSensitiveHelp)(IN BOOL fEnterMode) override;
STDMETHOD(ShowDW)(IN BOOL bShow) override;
STDMETHOD(CloseDW)(IN DWORD dwReserved) override;
STDMETHOD(ResizeBorderDW)( LPCRECT prcBorder, IUnknown *punkToolbarSite, BOOL fReserved) override;
STDMETHOD(GetBandInfo)( IN DWORD dwBandID, IN DWORD dwViewMode, IN OUT DESKBANDINFO *pdbi) override;
// IPersistStream
STDMETHOD(GetClassID)(OUT CLSID *pClassID) override;
STDMETHOD(GetSizeMax)(OUT ULARGE_INTEGER *pcbSize) override;
STDMETHOD(IsDirty)() override;
STDMETHOD(Load)(IN IStream *pStm) override;
STDMETHOD(Save)( IN IStream *pStm, IN BOOL fClearDirty) override;
// IWinEventHandler
STDMETHOD(OnWinEvent)( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult) override;
STDMETHOD(IsWindowOwner)(HWND hWnd) override;
// IOleCommandTarget
STDMETHOD(Exec)( IN const GUID *pguidCmdGroup, IN DWORD nCmdID, IN DWORD nCmdexecopt, IN VARIANT *pvaIn, IN OUT VARIANT *pvaOut) override;
STDMETHOD(QueryStatus)( IN const GUID *pguidCmdGroup, IN ULONG cCmds, IN OUT OLECMD prgCmds[], IN OUT OLECMDTEXT *pCmdText) override;
// IContextMenu STDMETHOD(GetCommandString)( UINT_PTR idCmd, UINT uFlags, UINT *pwReserved, LPSTR pszName, UINT cchMax) override;
STDMETHOD(InvokeCommand)(LPCMINVOKECOMMANDINFO pici) override;
STDMETHOD(QueryContextMenu)( HMENU hmenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags) override;
//*****************************************************************************************************
DECLARE_NOT_AGGREGATABLE(CQuickLaunchBand) DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(CQuickLaunchBand) COM_INTERFACE_ENTRY2_IID(IID_IOleWindow, IOleWindow, IDeskBand) COM_INTERFACE_ENTRY2_IID(IID_IDockingWindow, IDockingWindow, IDeskBand) COM_INTERFACE_ENTRY_IID(IID_IDeskBand, IDeskBand) COM_INTERFACE_ENTRY_IID(IID_IObjectWithSite, IObjectWithSite) COM_INTERFACE_ENTRY_IID(IID_IPersist, IPersist) COM_INTERFACE_ENTRY_IID(IID_IPersistStream, IPersistStream) COM_INTERFACE_ENTRY_IID(IID_IWinEventHandler, IWinEventHandler) COM_INTERFACE_ENTRY_IID(IID_IOleCommandTarget, IOleCommandTarget) COM_INTERFACE_ENTRY_IID(IID_IContextMenu, IContextMenu) END_COM_MAP()};