Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

47 lines
1.3 KiB

#ifndef _MENUISF_H
#define _MENUISF_H
#include "iface.h"
#include "caggunk.h"
#include "menubar.h"
// Object that uses TrackPopupMenu as its implementation for IMenuPopup.
//
class CTrackPopupBar : public CMenuDeskBar
{
public:
// *** IUnknown methods ***
STDMETHOD(QueryInterface) (REFIID riid, LPVOID * ppvObj);
STDMETHOD_(ULONG,AddRef) () ;
STDMETHOD_(ULONG,Release) ();
// *** IServiceProvider methods ***
virtual STDMETHODIMP QueryService(REFGUID guidService, REFIID riid, void **ppvObj);
// *** IOleWindow methods ***
virtual STDMETHODIMP GetWindow(HWND * phwnd) { return E_NOTIMPL; }
virtual STDMETHODIMP ContextSensitiveHelp(BOOL bEnterMode) { return E_NOTIMPL; }
// *** IMenuPopup methods ***
virtual STDMETHODIMP OnSelect(DWORD dwSelectType);
virtual STDMETHODIMP SetSubMenu(IMenuPopup* pmp, BOOL fSet);
virtual STDMETHODIMP Popup(POINTL *ppt, RECTL *prcExclude, DWORD dwFlags);
CTrackPopupBar(void* pvContext, int id, HMENU hmenu, HWND hwnd);
~CTrackPopupBar();
HMENU GetPopupMenu() { return GetSubMenu(_hmenu, _id); };
void SelectFirstItem();
protected:
int _id;
HMENU _hmenu;
HWND _hwndParent;
void* _pvContext;
// Popup message to indicate - "Ignore next MENUSELECT clear msg"
UINT _nMBIgnoreNextDeselect;
};
#endif