70 lines
2.4 KiB
C
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;
|
||
|
};
|
||
|
|