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

116 lines
3.6 KiB
C++

#ifndef _STARTMNU_H
#define _STARTMNU_H
//--------------------------------------------------------------------------
//
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#define SBM_CANCELMENU (WM_USER + 12)
#define SBM_REBUILDMENU (WM_USER + 13)
HRESULT StartMenuHost_Create(IMenuPopup** ppmp, IMenuBand** ppmb);
HRESULT IMenuPopup_SetIconSize(IMenuPopup* punk,DWORD iIcon);
STDAPI CHotKey_Create(IShellHotKey ** ppshk);
#ifdef __cplusplus
BOOL _ShowStartMenuLogoff();
BOOL _ShowStartMenuRun();
BOOL _ShowStartMenuEject();
BOOL _ShowStartMenuHelp();
BOOL _ShowStartMenuShutdown();
BOOL _ShowStartMenuDisconnect();
BOOL _ShowStartMenuSearch();
class CStartMenuHost : public ITrayPriv,
public IServiceProvider,
public IShellService,
public IMenuPopup,
public IOleCommandTarget,
public IWinEventHandler
{
public:
// *** IUnknown methods ***
STDMETHODIMP QueryInterface (REFIID riid, LPVOID * ppvObj);
STDMETHODIMP_(ULONG) AddRef () ;
STDMETHODIMP_(ULONG) Release ();
// *** ITrayPriv methods ***
STDMETHODIMP ExecItem (IShellFolder* psf, LPCITEMIDLIST pidl);
STDMETHODIMP GetFindCM(HMENU hmenu, UINT idFirst, UINT idLast, IContextMenu** ppcmFind);
STDMETHODIMP GetStaticStartMenu(HMENU* phmenu);
// *** IServiceProvider ***
STDMETHODIMP QueryService (REFGUID guidService, REFIID riid, void ** ppvObject);
// *** IShellService ***
STDMETHODIMP SetOwner (struct IUnknown* punkOwner);
// *** IOleWindow methods ***
STDMETHODIMP GetWindow (HWND * lphwnd);
STDMETHODIMP ContextSensitiveHelp (THIS_ BOOL fEnterMode) { return E_NOTIMPL; }
// *** IDeskBarClient methods ***
STDMETHODIMP SetClient (IUnknown* punkClient) { return E_NOTIMPL; }
STDMETHODIMP GetClient (IUnknown** ppunkClient) { return E_NOTIMPL; }
STDMETHODIMP OnPosRectChangeDB (LPRECT prc) { return E_NOTIMPL; }
// *** IMenuPopup methods ***
STDMETHODIMP Popup (POINTL *ppt, RECTL *prcExclude, DWORD dwFlags);
STDMETHODIMP OnSelect (DWORD dwSelectType);
STDMETHODIMP SetSubMenu (IMenuPopup* pmp, BOOL fSet);
// *** IOleCommandTarget ***
STDMETHODIMP QueryStatus(const GUID * pguidCmdGroup,
ULONG cCmds, OLECMD rgCmds[], OLECMDTEXT *pcmdtext);
STDMETHODIMP Exec(const GUID * pguidCmdGroup,
DWORD nCmdID, DWORD nCmdexecopt,
VARIANTARG *pvarargIn, VARIANTARG *pvarargOut);
// *** IWinEventHandler ***
STDMETHODIMP OnWinEvent(HWND h, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *plres);
STDMETHODIMP IsWindowOwner (HWND hwnd);
// *** IBanneredBar ***
protected:
CStartMenuHost();
friend HRESULT StartMenuHost_Create(IMenuPopup** ppmp, IMenuBand** ppmb);
int _cRef;
};
class CHotKey : public IShellHotKey
{
public:
// *** IUnknown methods ***
STDMETHODIMP QueryInterface (REFIID riid, LPVOID * ppvObj);
STDMETHODIMP_(ULONG) AddRef () ;
STDMETHODIMP_(ULONG) Release ();
// *** IShellHotKey methods ***
STDMETHODIMP RegisterHotKey(IShellFolder * psf, LPCITEMIDLIST pidlParent, LPCITEMIDLIST pidl);
protected:
CHotKey();
friend HRESULT CHotKey_Create(IShellHotKey ** ppshk);
int _cRef;
};
#endif //C++
#ifdef WINNT // hydra specific functions
STDAPI_(void) MuSecurity(void);
#endif
#endif //_START_H