ReactOS 0.4.16-dev-1142-g8029339
CISFBand.h
Go to the documentation of this file.
1/*
2 * PROJECT: ReactOS shell extensions
3 * LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
4 * PURPOSE: Quick Launch Toolbar (Taskbar Shell Extension)
5 * COPYRIGHT: Copyright 2017 Shriraj Sawant a.k.a SR13 <sr.official@hotmail.com>
6 * Copyright 2017-2018 Giannis Adamopoulos
7 * Copyright 2023-2025 Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
8 */
9
10#pragma once
11
12#define WM_ISFBAND_CHANGE_NOTIFY (WM_USER + 100)
13
14class CISFBand :
15 public CWindowImpl<CISFBand, CWindow>,
16 public CComCoClass<CBandSiteMenu, &CLSID_ISFBand>,
17 public CComObjectRootEx<CComMultiThreadModelNoCS>,
18 public IObjectWithSite,
19 public IDeskBand,
20 public IPersistStream,
21 public IWinEventHandler,
22 public IOleCommandTarget,
23 public IShellFolderBand,
24 public IContextMenu
25{
26 // Band
28 CComPtr<IUnknown> m_Site;
29
30 // Toolbar
31 CComPtr<IShellFolder> m_pISF;
32 CComHeapPtr<ITEMIDLIST_ABSOLUTE> m_pidl;
34
35 // Menu
39
47
48public:
49 CISFBand();
50 virtual ~CISFBand();
51
52// Personal Methods
54
56
57// IObjectWithSite
58 STDMETHOD(GetSite)(IN REFIID riid, OUT void **ppvSite) override;
59 STDMETHOD(SetSite)(IN IUnknown *pUnkSite) override;
60
61// IDeskBand
62 STDMETHOD(GetWindow)(OUT HWND *phwnd) override;
63 STDMETHOD(ContextSensitiveHelp)(IN BOOL fEnterMode) override;
64 STDMETHOD(ShowDW)(IN BOOL bShow) override;
66
68 LPCRECT prcBorder,
69 IUnknown *punkToolbarSite,
70 BOOL fReserved) override;
71
73 IN DWORD dwBandID,
74 IN DWORD dwViewMode,
75 IN OUT DESKBANDINFO *pdbi) override;
76
77// IPersistStream
78 STDMETHOD(GetClassID)(OUT CLSID *pClassID) override;
79 STDMETHOD(GetSizeMax)(OUT ULARGE_INTEGER *pcbSize) override;
80 STDMETHOD(IsDirty)() override;
81 STDMETHOD(Load)(IN IStream *pStm) override;
82 STDMETHOD(Save)(IN IStream *pStm, IN BOOL fClearDirty) override;
83
84// IWinEventHandler
86 HWND hWnd,
87 UINT uMsg,
90 LRESULT *theResult) override;
91
93
94// IOleCommandTarget
95
97 IN const GUID *pguidCmdGroup,
98 IN DWORD nCmdID,
99 IN DWORD nCmdexecopt,
100 IN VARIANT *pvaIn,
101 IN OUT VARIANT *pvaOut) override;
102
104 IN const GUID *pguidCmdGroup,
105 IN ULONG cCmds,
106 IN OUT OLECMD prgCmds[],
107 IN OUT OLECMDTEXT *pCmdText) override;
108
109// IShellFolderBand
113
114// IContextMenu
116 UINT_PTR idCmd,
117 UINT uFlags,
118 UINT *pwReserved,
119 LPSTR pszName,
120 UINT cchMax) override;
121
123
125 HMENU hmenu,
126 UINT indexMenu,
127 UINT idCmdFirst,
128 UINT idCmdLast,
129 UINT uFlags) override;
130
132 LRESULT OnTimer(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
133 LRESULT OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
134
135//*****************************************************************************************************
136
140
144 COM_INTERFACE_ENTRY_IID(IID_IDeskBand, IDeskBand)
148 COM_INTERFACE_ENTRY_IID(IID_IWinEventHandler, IWinEventHandler)
149 COM_INTERFACE_ENTRY_IID(IID_IOleCommandTarget, IOleCommandTarget)
150 COM_INTERFACE_ENTRY_IID(IID_IShellFolderBand, IShellFolderBand)
151 COM_INTERFACE_ENTRY_IID(IID_IContextMenu, IContextMenu)
153
159};
160
#define WM_ISFBAND_CHANGE_NOTIFY
Definition: CISFBand.h:12
HRESULT WINAPI RSHELL_CISFBand_CreateInstance(REFIID riid, void **ppv)
Definition: CISFBand.cpp:719
UINT cchMax
HWND hWnd
Definition: settings.c:17
#define STDMETHOD(m)
Definition: basetyps.h:62
LRESULT OnTimer(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
Definition: CISFBand.cpp:174
HRESULT ShowHideText(_In_ BOOL bShow)
Definition: CISFBand.cpp:162
STDMETHOD() ContextSensitiveHelp(IN BOOL fEnterMode) override
Definition: CISFBand.cpp:259
HRESULT CreateSimpleToolbar(HWND hWndParent)
Definition: CISFBand.cpp:46
CComPtr< IUnknown > m_Site
Definition: CISFBand.h:28
STDMETHOD() ShowDW(IN BOOL bShow) override
Definition: CISFBand.cpp:265
STDMETHOD() Load(IN IStream *pStm) override
Definition: CISFBand.cpp:381
UINT m_uChangeNotify
Definition: CISFBand.h:33
STDMETHOD() SetSite(IN IUnknown *pUnkSite) override
Definition: CISFBand.cpp:208
STDMETHOD() GetCommandString(UINT_PTR idCmd, UINT uFlags, UINT *pwReserved, LPSTR pszName, UINT cchMax) override
Definition: CISFBand.cpp:615
HRESULT BandInfoChanged()
Definition: CISFBand.cpp:152
BOOL RegisterChangeNotify(_In_ BOOL bRegister)
Definition: CISFBand.cpp:112
STDMETHOD() InitializeSFB(IShellFolder *psf, PCIDLIST_ABSOLUTE pidl) override
Definition: CISFBand.cpp:546
STDMETHOD() CloseDW(IN DWORD dwReserved) override
Definition: CISFBand.cpp:276
STDMETHOD() QueryContextMenu(HMENU hmenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags) override
Definition: CISFBand.cpp:690
CISFBand()
Definition: CISFBand.cpp:33
DWORD m_BandID
Definition: CISFBand.h:27
BOOL m_QLaunch
Definition: CISFBand.h:38
STDMETHOD() OnWinEvent(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult) override
Definition: CISFBand.cpp:413
HRESULT SetImageListIconSize(_In_ BOOL bSmall)
Definition: CISFBand.cpp:139
STDMETHOD() GetBandInfo(IN DWORD dwBandID, IN DWORD dwViewMode, IN OUT DESKBANDINFO *pdbi) override
Definition: CISFBand.cpp:293
BOOL m_bShowText
Definition: CISFBand.h:36
HRESULT AddToolbarButtons()
Definition: CISFBand.cpp:70
CComHeapPtr< ITEMIDLIST_ABSOLUTE > m_pidl
Definition: CISFBand.h:32
STDMETHOD() ContainsWindow(IN HWND hWnd)
Definition: CISFBand.cpp:402
STDMETHOD() InvokeCommand(LPCMINVOKECOMMANDINFO pici) override
Definition: CISFBand.cpp:646
BOOL m_bSmallIcon
Definition: CISFBand.h:37
virtual ~CISFBand()
Definition: CISFBand.cpp:42
STDMETHOD() ResizeBorderDW(LPCRECT prcBorder, IUnknown *punkToolbarSite, BOOL fReserved) override
Definition: CISFBand.cpp:287
STDMETHOD() Exec(IN const GUID *pguidCmdGroup, IN DWORD nCmdID, IN DWORD nCmdexecopt, IN VARIANT *pvaIn, IN OUT VARIANT *pvaOut) override
Definition: CISFBand.cpp:509
STDMETHOD() IsDirty() override
Definition: CISFBand.cpp:375
LRESULT OnChangeNotify(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
Definition: CISFBand.cpp:185
STDMETHOD() QueryStatus(IN const GUID *pguidCmdGroup, IN ULONG cCmds, IN OUT OLECMD prgCmds[], IN OUT OLECMDTEXT *pCmdText) override
Definition: CISFBand.cpp:502
LRESULT OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
Definition: CISFBand.cpp:194
STDMETHOD() GetWindow(OUT HWND *phwnd) override
Definition: CISFBand.cpp:248
STDMETHOD() GetSizeMax(OUT ULARGE_INTEGER *pcbSize) override
Definition: CISFBand.cpp:394
STDMETHOD() GetSite(IN REFIID riid, OUT void **ppvSite) override
Definition: CISFBand.cpp:231
STDMETHOD() IsWindowOwner(HWND hWnd) override
Definition: CISFBand.cpp:495
HRESULT RefreshToolbar()
Definition: CISFBand.cpp:64
void DeleteToolbarButtons()
Definition: CISFBand.cpp:99
STDMETHOD() GetClassID(OUT CLSID *pClassID) override
Definition: CISFBand.cpp:369
CComPtr< IShellFolder > m_pISF
Definition: CISFBand.h:31
STDMETHOD() SetBandInfoSFB(PBANDINFOSFB pbi) override
Definition: CISFBand.cpp:599
STDMETHOD() GetBandInfoSFB(PBANDINFOSFB pbi) override
Definition: CISFBand.cpp:533
STDMETHOD() Save(IN IStream *pStm, IN BOOL fClearDirty) override
Definition: CISFBand.cpp:388
Definition: terminate.cpp:24
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
UINT uFlags
Definition: api.c:59
#define IDR_ISFBAND
Definition: resource.h:108
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
REFIID riid
Definition: atlbase.h:39
REFIID LPVOID * ppv
Definition: atlbase.h:39
#define COM_INTERFACE_ENTRY2_IID(iid, x, x2)
Definition: atlcom.h:609
#define BEGIN_COM_MAP(x)
Definition: atlcom.h:581
#define COM_INTERFACE_ENTRY_IID(iid, x)
Definition: atlcom.h:601
#define DECLARE_PROTECT_FINAL_CONSTRUCT()
Definition: atlcom.h:679
#define DECLARE_NOT_AGGREGATABLE(x)
Definition: atlcom.h:651
#define DECLARE_REGISTRY_RESOURCEID(x)
Definition: atlcom.h:645
#define END_COM_MAP()
Definition: atlcom.h:592
#define MESSAGE_HANDLER(msg, func)
Definition: atlwin.h:1926
#define BEGIN_MSG_MAP(theClass)
Definition: atlwin.h:1898
#define END_MSG_MAP()
Definition: atlwin.h:1917
const IID IID_IObjectWithSite
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
Definition: ordinal.c:63
static HMENU hmenu
Definition: win.c:66
unsigned __int3264 UINT_PTR
Definition: mstsclib_h.h:274
_In_ HANDLE _In_ DWORD _In_ DWORD _Inout_opt_ LPOVERLAPPED _In_opt_ LPTRANSMIT_FILE_BUFFERS _In_ DWORD dwReserved
Definition: mswsock.h:95
unsigned int UINT
Definition: ndis.h:50
#define _In_
Definition: no_sal2.h:158
const GUID IID_IOleWindow
const GUID IID_IPersist
Definition: proxy.cpp:14
const GUID IID_IPersistStream
Definition: proxy.cpp:13
#define REFIID
Definition: guiddef.h:118
#define IN
Definition: typedefs.h:39
uint32_t ULONG
Definition: typedefs.h:59
#define OUT
Definition: typedefs.h:40
_Inout_ PERBANDINFO * pbi
Definition: winddi.h:3917
LONG_PTR LPARAM
Definition: windef.h:208
LONG_PTR LRESULT
Definition: windef.h:209
UINT_PTR WPARAM
Definition: windef.h:207
#define WINAPI
Definition: msvc.h:6
#define WM_TIMER
Definition: winuser.h:1753
#define WM_DESTROY
Definition: winuser.h:1620
char * LPSTR
Definition: xmlstorage.h:182