12#include <commoncontrols.h>
27#define TIMERID_DELAYED_REFRESH 0xBEEFCAFE
28#define TIMER_REFRESH_DELAY 500
72 CComPtr<IEnumIDList> pEnum;
73 HRESULT hr =
m_pISF->EnumObjects(0, SHCONTF_FOLDERS | SHCONTF_NONFOLDERS, &pEnum);
78 for (
INT iItem = 0; pEnum->Next(1, &pidl,
NULL) ==
S_OK; ++iItem)
81 hr =
m_pISF->GetDisplayNameOf(pidl, SHGDN_NORMAL, &strret);
118#define SHCNE_WATCH (SHCNE_RENAMEITEM | SHCNE_CREATE | SHCNE_DELETE | SHCNE_MKDIR | \
119 SHCNE_RMDIR | SHCNE_UPDATEDIR | SHCNE_UPDATEITEM | SHCNE_UPDATEIMAGE | \
120 SHCNE_RENAMEFOLDER | SHCNE_ASSOCCHANGED)
143 CComPtr<IImageList> piml;
213 TRACE(
"CISFBand::SetSite(0x%p)\n", pUnkSite);
218 TRACE(
"Querying site window failed: 0x%x\n",
hr);
233 TRACE(
"CISFBand::GetSite(0x%p,0x%p)\n",
riid, ppvSite);
295 TRACE(
"CTaskBand::GetBandInfo(0x%x,0x%x,0x%p) hWnd=0x%p\n", dwBandID, dwViewMode, pdbi, m_hWnd);
308 actualSize.
x = actualRect.
right - actualRect.
left;
309 actualSize.
y = actualRect.
bottom - actualRect.
top;
323 if (pdbi->dwMask & DBIM_MINSIZE)
326 pdbi->ptMinSize.x = idealSize.
x;
328 pdbi->ptMinSize.x = -1;
329 pdbi->ptMinSize.y = idealSize.
y;
331 if (pdbi->dwMask & DBIM_MAXSIZE)
333 pdbi->ptMaxSize = maxSize;
335 if (pdbi->dwMask & DBIM_INTEGRAL)
337 pdbi->ptIntegral = itemSize;
339 if (pdbi->dwMask & DBIM_ACTUAL)
341 pdbi->ptActual = actualSize;
343 if (pdbi->dwMask & DBIM_TITLE)
347 pdbi->dwMask &= ~DBIM_TITLE;
350 if (pdbi->dwMask & DBIM_MODEFLAGS)
352 pdbi->dwModeFlags = DBIMF_NORMAL | DBIMF_VARIABLEHEIGHT | DBIMF_USECHEVRON | DBIMF_NOMARGINS | DBIMF_BKCOLOR;
355 pdbi->dwModeFlags |= DBIMF_ADDTOFRONT;
358 if (pdbi->dwMask & DBIM_BKCOLOR)
359 pdbi->dwMask &= ~DBIM_BKCOLOR;
371 *pClassID = CLSID_ISFBand;
383 TRACE(
"CISFBand::Load called\n");
396 TRACE(
"CISFBand::GetSizeMax called\n");
406 TRACE(
"CISFBand::ContainsWindow(0x%p) returns S_OK\n",
hWnd);
436 CComPtr<IContextMenu> picm;
449 hr = picm->QueryContextMenu(fmenu, 0, 1, 0x7FFF, CMF_DEFAULTONLY);
458 info.fMask = CMIC_MASK_PTINVOKE;
461 info.fMask |= CMIC_MASK_CONTROL_DOWN;
465 info.fMask |= CMIC_MASK_SHIFT_DOWN;
511 if (
IsEqualIID(*pguidCmdGroup, IID_IBandSite))
514 if (
IsEqualIID(*pguidCmdGroup, IID_IDeskBand))
560 CComPtr<IShellFolder> psfDesktop;
578 ERR(
"Out of memory\n");
583 CComPtr<IPersistFolder2> ppf2;
721 return ShellObjectCreator<CISFBand>(
riid,
ppv);
BOOL _ILIsDesktop(LPCITEMIDLIST pidl)
HRESULT WINAPI SHGetDesktopFolder(IShellFolder **psf)
EXTERN_C HRESULT WINAPI RSHELL_CISFBand_CreateInstance(REFIID riid, void **ppv)
#define TIMER_REFRESH_DELAY
#define TIMERID_DELAYED_REFRESH
#define WM_ISFBAND_CHANGE_NOTIFY
EXTERN_C ULONG WINAPI SHChangeNotifyRegister(HWND hwnd, INT fSources, LONG wEventMask, UINT uMsg, INT cItems, SHChangeNotifyEntry *lpItems)
EXTERN_C BOOL WINAPI SHChangeNotifyDeregister(ULONG hNotify)
LRESULT OnTimer(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
HRESULT ShowHideText(_In_ BOOL bShow)
STDMETHOD() ContextSensitiveHelp(IN BOOL fEnterMode) override
HRESULT CreateSimpleToolbar(HWND hWndParent)
CComPtr< IUnknown > m_Site
STDMETHOD() ShowDW(IN BOOL bShow) override
STDMETHOD() Load(IN IStream *pStm) override
STDMETHOD() SetSite(IN IUnknown *pUnkSite) override
STDMETHOD() GetCommandString(UINT_PTR idCmd, UINT uFlags, UINT *pwReserved, LPSTR pszName, UINT cchMax) override
HRESULT BandInfoChanged()
BOOL RegisterChangeNotify(_In_ BOOL bRegister)
STDMETHOD() InitializeSFB(IShellFolder *psf, PCIDLIST_ABSOLUTE pidl) override
STDMETHOD() CloseDW(IN DWORD dwReserved) override
STDMETHOD() QueryContextMenu(HMENU hmenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags) override
STDMETHOD() OnWinEvent(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult) override
HRESULT SetImageListIconSize(_In_ BOOL bSmall)
STDMETHOD() GetBandInfo(IN DWORD dwBandID, IN DWORD dwViewMode, IN OUT DESKBANDINFO *pdbi) override
HRESULT AddToolbarButtons()
CComHeapPtr< ITEMIDLIST_ABSOLUTE > m_pidl
STDMETHOD() ContainsWindow(IN HWND hWnd)
STDMETHOD() InvokeCommand(LPCMINVOKECOMMANDINFO pici) override
STDMETHOD() ResizeBorderDW(LPCRECT prcBorder, IUnknown *punkToolbarSite, BOOL fReserved) override
STDMETHOD() Exec(IN const GUID *pguidCmdGroup, IN DWORD nCmdID, IN DWORD nCmdexecopt, IN VARIANT *pvaIn, IN OUT VARIANT *pvaOut) override
STDMETHOD() IsDirty() override
LRESULT OnChangeNotify(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
STDMETHOD() QueryStatus(IN const GUID *pguidCmdGroup, IN ULONG cCmds, IN OUT OLECMD prgCmds[], IN OUT OLECMDTEXT *pCmdText) override
LRESULT OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
STDMETHOD() GetWindow(OUT HWND *phwnd) override
STDMETHOD() GetSizeMax(OUT ULARGE_INTEGER *pcbSize) override
STDMETHOD() GetSite(IN REFIID riid, OUT void **ppvSite) override
STDMETHOD() IsWindowOwner(HWND hWnd) override
void DeleteToolbarButtons()
STDMETHOD() GetClassID(OUT CLSID *pClassID) override
CComPtr< IShellFolder > m_pISF
STDMETHOD() SetBandInfoSFB(PBANDINFOSFB pbi) override
STDMETHOD() GetBandInfoSFB(PBANDINFOSFB pbi) override
STDMETHOD() Save(IN IStream *pStm, IN BOOL fClearDirty) override
#define FAILED_UNEXPECTEDLY(hr)
HMODULE WINAPI GetModuleHandleW(LPCWSTR lpModuleName)
HRESULT WINAPI IUnknown_Exec(IUnknown *lpUnknown, REFGUID pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
HRESULT WINAPI SHInvokeDefaultCommand(HWND hWnd, IShellFolder *lpFolder, LPCITEMIDLIST lpApidl)
HRESULT WINAPI IUnknown_GetWindow(IUnknown *lpUnknown, HWND *lphWnd)
HRESULT WINAPI StrRetToBufW(LPSTRRET src, const ITEMIDLIST *pidl, LPWSTR dest, UINT len)
#define MAKE_HRESULT(sev, fac, code)
int WINAPI SHMapPIDLToSystemImageListIndex(IShellFolder *sh, LPCITEMIDLIST pidl, int *pIndex)
VOID WINAPI CoTaskMemFree(LPVOID ptr)
HRESULT QueryInterface([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
unsigned __int3264 UINT_PTR
_In_ HANDLE _In_ DWORD _In_ DWORD _Inout_opt_ LPOVERLAPPED _In_opt_ LPTRANSMIT_FILE_BUFFERS _In_ DWORD dwReserved
#define MAKEINTRESOURCE(i)
LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST pidl)
BOOL WINAPI ILGetDisplayNameEx(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, LPVOID path, DWORD type)
#define TB_SETEXTENDEDSTYLE
#define TBSTYLE_EX_MIXEDBUTTONS
#define TOOLBARCLASSNAMEW
struct tagNMMOUSE * LPNMMOUSE
#define IsEqualIID(riid1, riid2)
HRESULT WINAPI SHGetImageList(int iImageList, REFIID riid, void **ppv)
BOOL WINAPI DECLSPEC_HOTPATCH ShellExecuteExW(LPSHELLEXECUTEINFOW sei)
#define ISFB_STATE_QLINKSMODE
#define SHCNRF_NewDelivery
#define MM_SUBMENUSHAVEIDS
#define SHCNRF_ShellLevel
ITEMIDLIST UNALIGNED * LPITEMIDLIST
HRESULT WINAPI SetWindowTheme(_In_ HWND hwnd, _In_ LPCWSTR pszSubAppName, _In_ LPCWSTR pszSubIdList)
_Inout_ PERBANDINFO * pbi
#define SubclassWindow(hwnd, lpfn)
HMENU WINAPI CreatePopupMenu(void)
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
BOOL WINAPI DeleteMenu(_In_ HMENU, _In_ UINT, _In_ UINT)
BOOL WINAPI TrackPopupMenuEx(_In_ HMENU, _In_ UINT, _In_ int, _In_ int, _In_ HWND, _In_opt_ LPTPMPARAMS)
UINT_PTR WINAPI SetTimer(_In_opt_ HWND, _In_ UINT_PTR, _In_ UINT, _In_opt_ TIMERPROC)
DWORD WINAPI CheckMenuItem(_In_ HMENU, _In_ UINT, _In_ UINT)
HMENU WINAPI GetSubMenu(_In_ HMENU, _In_ int)
BOOL WINAPI IsChild(_In_ HWND, _In_ HWND)
HWND WINAPI CreateWindowExW(_In_ DWORD dwExStyle, _In_opt_ LPCWSTR lpClassName, _In_opt_ LPCWSTR lpWindowName, _In_ DWORD dwStyle, _In_ int X, _In_ int Y, _In_ int nWidth, _In_ int nHeight, _In_opt_ HWND hWndParent, _In_opt_ HMENU hMenu, _In_opt_ HINSTANCE hInstance, _In_opt_ LPVOID lpParam)
#define MAKEINTRESOURCEA(i)
BOOL WINAPI DestroyMenu(_In_ HMENU)
BOOL WINAPI KillTimer(_In_opt_ HWND, _In_ UINT_PTR)
BOOL WINAPI DestroyWindow(_In_ HWND)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
SHORT WINAPI GetKeyState(_In_ int)
#define IID_PPV_ARG(Itype, ppType)
#define IID_NULL_PPV_ARG(Itype, ppType)