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

57 lines
2 KiB
C++

//
// Plug-in to enumerate a list of folders from a registry key
//
//
// Property bag:
//
// "Target" - name of registry key to enumerate
//
#include "sfthost.h"
class SpecialFolderList : public SFTBarHost
{
public:
friend SFTBarHost *SpecList_CreateInstance()
{ return new SpecialFolderList(); }
SpecialFolderList() : SFTBarHost(HOSTF_CANRENAME | HOSTF_REVALIDATE |
HOSTF_RELOADTEXT |
HOSTF_CASCADEMENU)
{
_iThemePart = SPP_PLACESLIST;
_iThemePartSep = SPP_PLACESLISTSEPARATOR;
}
private:
~SpecialFolderList();
HRESULT Initialize();
void EnumItems();
int CompareItems(PaneItem *p1, PaneItem *p2);
HRESULT GetFolderAndPidl(PaneItem *pitem, IShellFolder **ppsfOut, LPCITEMIDLIST *ppidlOut);
HRESULT ContextMenuRenameItem(PaneItem *p, LPCTSTR ptszNewName);
BOOL IsItemStillValid(PaneItem *p);
HRESULT GetCascadeMenu(PaneItem *pitem, IShellMenu **ppsm);
int ReadIconSize() { return ICONSIZE_MEDIUM; }
BOOL NeedBackgroundEnum() { return TRUE; }
int AddImageForItem(PaneItem *p, IShellFolder *psf, LPCITEMIDLIST pidl, int iPos);
LPTSTR DisplayNameOfItem(PaneItem *p, IShellFolder *psf, LPCITEMIDLIST pidlItem, SHGNO shgno);
TCHAR GetItemAccelerator(PaneItem *pitem, int iItemStart);
void OnChangeNotify(UINT id, LONG lEvent, LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2);
BOOL IsBold(PaneItem *pitem);
void GetItemInfoTip(PaneItem *pitem, LPTSTR pszText, DWORD cch);
void UpdateImage(int iImage) { }
HRESULT ContextMenuInvokeItem(PaneItem *p, IContextMenu *pcm, CMINVOKECOMMANDINFOEX *pici, LPCTSTR pszVerb);
UINT AdjustDeleteMenuItem(PaneItem *pitem, UINT *puiFlags);
LRESULT OnWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
HRESULT _GetUIObjectOfItem(PaneItem *p, REFIID riid, LPVOID *ppv);
private:
static DWORD WINAPI _HasEnoughChildrenThreadProc(LPVOID pvData);
UINT _cNotify;
};