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

70 lines
2.4 KiB
C++

//
// publics for defcm
//
// Some code that knows defcm will be used likes to prepare the menu first.
// If you do this, you must call SHPrettyMenuForDefcm instead of _SHPrettyMenu
HRESULT SHPrepareMenuForDefcm(HMENU hmenu, UINT indexMenu, UINT uFlags, UINT idCmdFirst, UINT idCmdLast); // sets things up
HRESULT SHPrettyMenuForDefcm(HMENU hmenu, UINT uFlags, UINT idCmdFirst, UINT idCmdLast, HRESULT hrPrepare); // cleans things up part way
HRESULT SHUnprepareMenuForDefcm(HMENU hmenu, UINT idCmdFirst, UINT idCmdLast); // cleans things up the rest of the way (not required if you're just destroying the menu)
STDAPI CDefFolderMenu_CreateHKeyMenu(HWND hwndOwner, HKEY hkey, IContextMenu **ppcm);
STDAPI CDefFolderMenu_Create2Ex(LPCITEMIDLIST pidlFolder, HWND hwnd,
UINT cidl, LPCITEMIDLIST *apidl,
IShellFolder *psf, IContextMenuCB *pcmcb,
UINT nKeys, const HKEY *ahkeyClsKeys,
IContextMenu **ppcm);
STDAPI CDefFolderMenu_CreateEx(LPCITEMIDLIST pidlFolder,
HWND hwnd, UINT cidl, LPCITEMIDLIST *apidl,
IShellFolder *psf, IContextMenuCB *pcmcb,
HKEY hkeyProgID, HKEY hkeyBaseProgID,
IContextMenu **ppcm);
STDAPI_(void) DrawMenuItem(DRAWITEMSTRUCT* pdi, LPCTSTR pszText, UINT iIcon);
STDAPI_(LRESULT) MeasureMenuItem(MEASUREITEMSTRUCT *pmi, LPCTSTR pszText);
typedef struct {
UINT max;
struct {
UINT id;
UINT fFlags;
} list[2];
} IDMAPFORQCMINFO;
extern const IDMAPFORQCMINFO g_idMap;
typedef struct {
HWND hwnd;
IContextMenuCB *pcmcb;
LPCITEMIDLIST pidlFolder;
IShellFolder *psf;
UINT cidl;
LPCITEMIDLIST *apidl;
IAssociationArray *paa;
UINT cKeys;
const HKEY *aKeys;
} DEFCONTEXTMENU;
STDAPI CreateDefaultContextMenu(DEFCONTEXTMENU *pdcm, IContextMenu **ppcm);
class CDefBackgroundMenuCB : public IContextMenuCB
{
public:
CDefBackgroundMenuCB(LPCITEMIDLIST pidlFolder);
// IUnknown
STDMETHODIMP QueryInterface(REFIID riid, void **ppv);
STDMETHODIMP_(ULONG) AddRef();
STDMETHODIMP_(ULONG) Release();
// IContextMenuCB
STDMETHODIMP CallBack(IShellFolder *psf, HWND hwndOwner, IDataObject *pdtobj, UINT uMsg, WPARAM wParam, LPARAM lParam);
private:
virtual ~CDefBackgroundMenuCB();
LPITEMIDLIST _pidlFolder;
LONG _cRef;
};