48 lines
1.3 KiB
C++
48 lines
1.3 KiB
C++
#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
|