ReactOS 0.4.15-dev-6694-g4ba8af9
CMenuBand Class Reference

#include <CMenuBand.h>

Inheritance diagram for CMenuBand:
Collaboration diagram for CMenuBand:

Public Member Functions

 CMenuBand ()
 
virtual ~CMenuBand ()
 
virtual HRESULT STDMETHODCALLTYPE GetBandInfo (DWORD dwBandID, DWORD dwViewMode, DESKBANDINFO *pdbi)
 
virtual HRESULT STDMETHODCALLTYPE ShowDW (BOOL fShow)
 
virtual HRESULT STDMETHODCALLTYPE CloseDW (DWORD dwReserved)
 
virtual HRESULT STDMETHODCALLTYPE ResizeBorderDW (LPCRECT prcBorder, IUnknown *punkToolbarSite, BOOL fReserved)
 
virtual HRESULT STDMETHODCALLTYPE GetWindow (HWND *phwnd)
 
virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp (BOOL fEnterMode)
 
virtual HRESULT STDMETHODCALLTYPE SetSite (IUnknown *pUnkSite)
 
virtual HRESULT STDMETHODCALLTYPE GetSite (REFIID riid, PVOID *ppvSite)
 
virtual HRESULT STDMETHODCALLTYPE UIActivateIO (BOOL fActivate, LPMSG lpMsg)
 
virtual HRESULT STDMETHODCALLTYPE HasFocusIO ()
 
virtual HRESULT STDMETHODCALLTYPE TranslateAcceleratorIO (LPMSG lpMsg)
 
virtual HRESULT STDMETHODCALLTYPE IsDirty ()
 
virtual HRESULT STDMETHODCALLTYPE Load (IStream *pStm)
 
virtual HRESULT STDMETHODCALLTYPE Save (IStream *pStm, BOOL fClearDirty)
 
virtual HRESULT STDMETHODCALLTYPE GetSizeMax (ULARGE_INTEGER *pcbSize)
 
virtual HRESULT STDMETHODCALLTYPE GetClassID (CLSID *pClassID)
 
virtual HRESULT STDMETHODCALLTYPE QueryStatus (const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[], OLECMDTEXT *pCmdText)
 
virtual HRESULT STDMETHODCALLTYPE Exec (const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
 
virtual HRESULT STDMETHODCALLTYPE QueryService (REFGUID guidService, REFIID riid, void **ppvObject)
 
virtual HRESULT STDMETHODCALLTYPE Popup (POINTL *ppt, RECTL *prcExclude, MP_POPUPFLAGS dwFlags)
 
virtual HRESULT STDMETHODCALLTYPE OnSelect (DWORD dwSelectType)
 
virtual HRESULT STDMETHODCALLTYPE SetSubMenu (IMenuPopup *pmp, BOOL fSet)
 
virtual HRESULT STDMETHODCALLTYPE SetClient (IUnknown *punkClient)
 
virtual HRESULT STDMETHODCALLTYPE GetClient (IUnknown **ppunkClient)
 
virtual HRESULT STDMETHODCALLTYPE OnPosRectChangeDB (RECT *prc)
 
virtual HRESULT STDMETHODCALLTYPE IsMenuMessage (MSG *pmsg)
 
virtual HRESULT STDMETHODCALLTYPE TranslateMenuMessage (MSG *pmsg, LRESULT *plRet)
 
virtual HRESULT STDMETHODCALLTYPE Initialize (IShellMenuCallback *psmc, UINT uId, UINT uIdAncestor, DWORD dwFlags)
 
virtual HRESULT STDMETHODCALLTYPE GetMenuInfo (IShellMenuCallback **ppsmc, UINT *puId, UINT *puIdAncestor, DWORD *pdwFlags)
 
virtual HRESULT STDMETHODCALLTYPE SetShellFolder (IShellFolder *psf, LPCITEMIDLIST pidlFolder, HKEY hKey, DWORD dwFlags)
 
virtual HRESULT STDMETHODCALLTYPE GetShellFolder (DWORD *pdwFlags, LPITEMIDLIST *ppidl, REFIID riid, void **ppv)
 
virtual HRESULT STDMETHODCALLTYPE SetMenu (HMENU hmenu, HWND hwnd, DWORD dwFlags)
 
virtual HRESULT STDMETHODCALLTYPE GetMenu (HMENU *phmenu, HWND *phwnd, DWORD *pdwFlags)
 
virtual HRESULT STDMETHODCALLTYPE InvalidateItem (LPSMDATA psmd, DWORD dwFlags)
 
virtual HRESULT STDMETHODCALLTYPE GetState (LPSMDATA psmd)
 
virtual HRESULT STDMETHODCALLTYPE SetMenuToolbar (IUnknown *punk, DWORD dwFlags)
 
virtual HRESULT STDMETHODCALLTYPE OnWinEvent (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult)
 
virtual HRESULT STDMETHODCALLTYPE IsWindowOwner (HWND hWnd)
 
virtual HRESULT STDMETHODCALLTYPE GetSubMenu (THIS)
 
virtual HRESULT STDMETHODCALLTYPE SetToolbar (THIS)
 
virtual HRESULT STDMETHODCALLTYPE SetMinWidth (THIS)
 
virtual HRESULT STDMETHODCALLTYPE SetNoBorder (THIS)
 
virtual HRESULT STDMETHODCALLTYPE SetTheme (THIS)
 
virtual HRESULT STDMETHODCALLTYPE GetTop (THIS)
 
virtual HRESULT STDMETHODCALLTYPE GetBottom (THIS)
 
virtual HRESULT STDMETHODCALLTYPE GetTracked (THIS)
 
virtual HRESULT STDMETHODCALLTYPE GetParentSite (THIS)
 
virtual HRESULT STDMETHODCALLTYPE GetState (THIS)
 
virtual HRESULT STDMETHODCALLTYPE DoDefaultAction (THIS)
 
virtual HRESULT STDMETHODCALLTYPE IsEmpty (THIS)
 
HRESULT _CallCBWithItemId (UINT Id, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
HRESULT _CallCBWithItemPidl (LPITEMIDLIST pidl, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
HRESULT _TrackSubMenu (HMENU popup, INT x, INT y, RECT &rcExclude)
 
HRESULT _TrackContextMenu (IContextMenu *popup, INT x, INT y)
 
HRESULT _GetTopLevelWindow (HWND *topLevel)
 
HRESULT _ChangeHotItem (CMenuToolbarBase *tb, INT id, DWORD dwFlags)
 
HRESULT _ChangePopupItem (CMenuToolbarBase *tb, INT id)
 
HRESULT _MenuItemSelect (DWORD changeType)
 
HRESULT _CancelCurrentPopup ()
 
HRESULT _OnPopupSubMenu (IShellMenu *childShellMenu, POINTL *pAt, RECTL *pExclude, BOOL mouseInitiated)
 
HRESULT _BeforeCancelPopup ()
 
HRESULT _DisableMouseTrack (BOOL bDisable)
 
HRESULT _SetChildBand (CMenuBand *child)
 
HRESULT _SetParentBand (CMenuBand *parent)
 
HRESULT _IsPopup ()
 
HRESULT _IsTracking ()
 
HRESULT _KillPopupTimers ()
 
HRESULT _MenuBarMouseDown (HWND hwnd, INT item, BOOL isLButton)
 
HRESULT _MenuBarMouseUp (HWND hwnd, INT item, BOOL isLButton)
 
HRESULT _HasSubMenu ()
 
HRESULT AdjustForTheme (BOOL bFlatStyle)
 
BOOL UseBigIcons ()
 
- Public Member Functions inherited from ATL::CComObjectRootEx< CComMultiThreadModelNoCS >
 ~CComObjectRootEx ()
 
ULONG InternalAddRef ()
 
ULONG InternalRelease ()
 
void Lock ()
 
void Unlock ()
 
HRESULT _AtlInitialConstruct ()
 
- Public Member Functions inherited from ATL::CComObjectRootBase
 CComObjectRootBase ()
 
 ~CComObjectRootBase ()
 
void SetVoid (void *)
 
HRESULT _AtlFinalConstruct ()
 
HRESULT FinalConstruct ()
 
void InternalFinalConstructAddRef ()
 
void InternalFinalConstructRelease ()
 
void FinalRelease ()
 
HRESULT GetBandInfo ([in] DWORD dwBandID, [in] DWORD dwViewMode, [in, out] DESKBANDINFO *pdbi)
 
HRESULT ShowDW ([in] BOOL fShow)
 
HRESULT CloseDW ([in] DWORD dwReserved)
 
HRESULT ResizeBorderDW ([in] LPCRECT prcBorder, [in] IUnknown *punkToolbarSite, [in] BOOL fReserved)
 
HRESULT GetWindow ([out] HWND *phwnd)
 
HRESULT ContextSensitiveHelp ([in] BOOL fEnterMode)
 
- Public Member Functions inherited from IUnknown
HRESULT QueryInterface ([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
 
ULONG AddRef ()
 
ULONG Release ()
 
HRESULT SetSite ([in] IUnknown *pUnkSite)
 
HRESULT GetSite ([in] REFIID riid, [out, iid_is(riid)] PVOID *ppvSite)
 
HRESULT IsDirty ()
 
HRESULT Load ([in, unique] IStream *pStm)
 
HRESULT Save ([in, unique] IStream *pStm, [in] BOOL fClearDirty)
 
HRESULT GetSizeMax ([out] ULARGE_INTEGER *pcbSize)
 
HRESULT GetClassID ([out] CLSID *pClassID)
 
HRESULT QueryStatus ([in, unique] const GUID *pguidCmdGroup, [in] ULONG cCmds, [in, out, size_is(cCmds)] OLECMD prgCmds[], [in, out, unique] OLECMDTEXT *pCmdText)
 
HRESULT Exec ([in, unique] const GUID *pguidCmdGroup, [in] DWORD nCmdID, [in] DWORD nCmdexecopt, [in, unique] VARIANT *pvaIn, [in, out, unique] VARIANT *pvaOut)
 
- Public Member Functions inherited from IServiceProvider
HRESULT QueryService ([in] REFGUID guidService, [in] REFIID riid, [out] void **ppvObject)
 
HRESULT RemoteQueryService ([in] REFGUID guidService, [in] REFIID riid, [out, iid_is(riid)] IUnknown **ppvObject)
 
HRESULT Popup ([in] POINTL *ppt, [in] RECTL *prcExclude, [in] MP_POPUPFLAGS dwFlags)
 
HRESULT OnSelect ([in] DWORD dwSelectType)
 
HRESULT SetSubMenu ([in] IMenuPopup *pmp, [in] BOOL fSet)
 
HRESULT SetClient ([in] IUnknown *punkClient)
 
HRESULT GetClient ([out] IUnknown **ppunkClient)
 
HRESULT OnPosRectChangeDB ([in] RECT *prc)
 
HRESULT IsMenuMessage ([in] MSG *pmsg)
 
HRESULT TranslateMenuMessage ([in, out] MSG *pmsg, [out] LRESULT *plRet)
 

Private Member Functions

HRESULT _KeyboardItemChange (DWORD change)
 
HRESULT _CallCB (UINT uMsg, WPARAM wParam, LPARAM lParam, UINT id=0, LPITEMIDLIST pidl=NULL)
 

Private Attributes

CMenuFocusManagerm_focusManager
 
CMenuStaticToolbarm_staticToolbar
 
CMenuSFToolbarm_SFToolbar
 
CComPtr< IOleWindowm_site
 
CComPtr< IShellMenuCallbackm_psmc
 
CComPtr< IMenuPopupm_subMenuChild
 
CComPtr< IMenuPopupm_subMenuParent
 
CComPtr< CMenuBandm_childBand
 
CComPtr< CMenuBandm_parentBand
 
UINT m_uId
 
UINT m_uIdAncestor
 
DWORD m_dwFlags
 
PVOID m_UserData
 
HMENU m_hmenu
 
HWND m_menuOwner
 
BOOL m_useBigIcons
 
HWND m_topLevelWindow
 
CMenuToolbarBasem_hotBar
 
INT m_hotItem
 
CMenuToolbarBasem_popupBar
 
INT m_popupItem
 
BOOL m_Show
 
BOOL m_shellBottom
 
HMENU m_trackedPopup
 
HWND m_trackedHwnd
 

Additional Inherited Members

- Public Types inherited from IOleWindow
typedef IOleWindowLPOLEWINDOW
 
- Public Types inherited from IUnknown
typedef IUnknownLPUNKNOWN
 
- Public Types inherited from IObjectWithSite
typedef IObjectWithSiteLPOBJECTWITHSITE
 
- Public Types inherited from IPersistStream
typedef IPersistStreamLPPERSISTSTREAM
 
- Public Types inherited from IPersist
typedef IPersistLPPERSIST
 
- Public Types inherited from IOleCommandTarget
enum  OLECMDF {
  OLECMDF_SUPPORTED = 0x1 , OLECMDF_ENABLED = 0x2 , OLECMDF_LATCHED = 0x4 , OLECMDF_NINCHED = 0x8 ,
  OLECMDF_INVISIBLE = 0x10 , OLECMDF_DEFHIDEONCTXTMENU = 0x20
}
 
enum  OLECMDTEXTF { OLECMDTEXTF_NONE = 0 , OLECMDTEXTF_NAME = 1 , OLECMDTEXTF_STATUS = 2 }
 
enum  OLECMDEXECOPT { OLECMDEXECOPT_DODEFAULT = 0 , OLECMDEXECOPT_PROMPTUSER = 1 , OLECMDEXECOPT_DONTPROMPTUSER = 2 , OLECMDEXECOPT_SHOWHELP = 3 }
 
enum  OLECMDID {
  OLECMDID_OPEN = 1 , OLECMDID_NEW = 2 , OLECMDID_SAVE = 3 , OLECMDID_SAVEAS = 4 ,
  OLECMDID_SAVECOPYAS = 5 , OLECMDID_PRINT = 6 , OLECMDID_PRINTPREVIEW = 7 , OLECMDID_PAGESETUP = 8 ,
  OLECMDID_SPELL = 9 , OLECMDID_PROPERTIES = 10 , OLECMDID_CUT = 11 , OLECMDID_COPY = 12 ,
  OLECMDID_PASTE = 13 , OLECMDID_PASTESPECIAL = 14 , OLECMDID_UNDO = 15 , OLECMDID_REDO = 16 ,
  OLECMDID_SELECTALL = 17 , OLECMDID_CLEARSELECTION = 18 , OLECMDID_ZOOM = 19 , OLECMDID_GETZOOMRANGE = 20 ,
  OLECMDID_UPDATECOMMANDS = 21 , OLECMDID_REFRESH = 22 , OLECMDID_STOP = 23 , OLECMDID_HIDETOOLBARS = 24 ,
  OLECMDID_SETPROGRESSMAX = 25 , OLECMDID_SETPROGRESSPOS = 26 , OLECMDID_SETPROGRESSTEXT = 27 , OLECMDID_SETTITLE = 28 ,
  OLECMDID_SETDOWNLOADSTATE = 29 , OLECMDID_STOPDOWNLOAD = 30 , OLECMDID_ONTOOLBARACTIVATED = 31 , OLECMDID_FIND = 32 ,
  OLECMDID_DELETE = 33 , OLECMDID_HTTPEQUIV = 34 , OLECMDID_HTTPEQUIV_DONE = 35 , OLECMDID_ENABLE_INTERACTION = 36 ,
  OLECMDID_ONUNLOAD = 37 , OLECMDID_PROPERTYBAG2 = 38 , OLECMDID_PREREFRESH = 39 , OLECMDID_SHOWSCRIPTERROR = 40 ,
  OLECMDID_SHOWMESSAGE = 41 , OLECMDID_SHOWFIND = 42 , OLECMDID_SHOWPAGESETUP = 43 , OLECMDID_SHOWPRINT = 44 ,
  OLECMDID_CLOSE = 45 , OLECMDID_ALLOWUILESSSAVEAS = 46 , OLECMDID_DONTDOWNLOADCSS = 47 , OLECMDID_UPDATEPAGESTATUS = 48 ,
  OLECMDID_PRINT2 = 49 , OLECMDID_PRINTPREVIEW2 = 50 , OLECMDID_SETPRINTTEMPLATE = 51 , OLECMDID_GETPRINTTEMPLATE = 52 ,
  OLECMDID_PAGEACTIONBLOCKED = 55 , OLECMDID_PAGEACTIONUIQUERY = 56 , OLECMDID_FOCUSVIEWCONTROLS = 57 , OLECMDID_FOCUSVIEWCONTROLSQUERY = 58 ,
  OLECMDID_SHOWPAGEACTIONMENU = 59 , OLECMDID_ADDTRAVELENTRY = 60 , OLECMDID_UPDATETRAVELENTRY = 61 , OLECMDID_UPDATEBACKFORWARDSTATE = 62 ,
  OLECMDID_OPTICAL_ZOOM = 63 , OLECMDID_OPTICAL_GETZOOMRANGE = 64 , OLECMDID_WINDOWSTATECHANGED = 65 , OLECMDID_ACTIVEXINSTALLSCOPE = 66 ,
  OLECMDID_UPDATETRAVELENTRY_DATARECOVERY = 67 , OLECMDID_SHOWTASKDLG = 68 , OLECMDID_POPSTATEEVENT = 69 , OLECMDID_VIEWPORT_MODE = 70 ,
  OLECMDID_LAYOUT_VIEWPORT_WIDTH = 71 , OLECMDID_VISUAL_VIEWPORT_EXCLUDE_BOTTOM = 72 , OLECMDID_USER_OPTICAL_ZOOM = 73 , OLECMDID_PAGEAVAILABLE = 74 ,
  OLECMDID_GETUSERSCALABLE = 75 , OLECMDID_UPDATE_CARET = 76 , OLECMDID_ENABLE_VISIBILITY = 77 , OLECMDID_MEDIA_PLAYBACK = 78
}
 
typedef IOleCommandTargetLPOLECOMMANDTARGET
 
typedef enum IOleCommandTarget::OLECMDF OLECMDF
 
typedef struct IOleCommandTarget::_tagOLECMD OLECMD
 
typedef struct IOleCommandTarget::_tagOLECMDTEXT OLECMDTEXT
 
typedef enum IOleCommandTarget::OLECMDTEXTF OLECMDTEXTF
 
typedef enum IOleCommandTarget::OLECMDEXECOPT OLECMDEXECOPT
 
typedef enum IOleCommandTarget::OLECMDID OLECMDID
 
- Public Types inherited from IServiceProvider
typedef IServiceProviderLPSERVICEPROVIDER
 
- Public Types inherited from IMenuPopup
enum  tagMENUPOPUPSELECT {
  MPOS_EXECUTE = 0 , MPOS_FULLCANCEL , MPOS_CANCELLEVEL , MPOS_SELECTLEFT ,
  MPOS_SELECTRIGHT , MPOS_CHILDTRACKING
}
 
enum  tagMENUPOPUPPOPUPFLAGS {
  MPPF_SETFOCUS = 0x00000001 , MPPF_INITIALSELECT = 0x00000002 , MPPF_NOANIMATE = 0x00000004 , MPPF_KEYBOARD = 0x00000010 ,
  MPPF_REPOSITION = 0x00000020 , MPPF_FORCEZORDER = 0x00000040 , MPPF_FINALSELECT = 0x00000080 , MPPF_TOP = 0x20000000 ,
  MPPF_LEFT = 0x40000000 , MPPF_RIGHT = 0x60000000 , MPPF_BOTTOM = 0x80000000 , MPPF_POS_MASK = 0xE0000000 ,
  MPPF_ALIGN_LEFT = 0x02000000 , MPPF_ALIGN_RIGHT = 0x04000000
}
 
typedef int MP_POPUPFLAGS
 
- Public Types inherited from IMenuBand
enum  tagMENUBANDHANDLERCID { MBHANDCID_PIDLSELECT = 0 }
 
- Static Public Member Functions inherited from ATL::CComObjectRootBase
static void WINAPI ObjectMain (bool)
 
static const struct _ATL_CATMAP_ENTRYGetCategoryMap ()
 
static HRESULT WINAPI InternalQueryInterface (void *pThis, const _ATL_INTMAP_ENTRY *pEntries, REFIID iid, void **ppvObject)
 
- Public Attributes inherited from ATL::CComObjectRootBase
LONG m_dwRef
 

Detailed Description

Definition at line 27 of file CMenuBand.h.

Constructor & Destructor Documentation

◆ CMenuBand()

CMenuBand::CMenuBand ( )

Definition at line 35 of file CMenuBand.cpp.

35 :
38 m_site(NULL),
39 m_psmc(NULL),
49 m_hotItem(-1),
51 m_popupItem(-1),
56{
58}
HWND m_trackedHwnd
Definition: CMenuBand.h:73
CMenuSFToolbar * m_SFToolbar
Definition: CMenuBand.h:45
CMenuFocusManager * m_focusManager
Definition: CMenuBand.h:43
CMenuToolbarBase * m_popupBar
Definition: CMenuBand.h:66
CComPtr< IMenuPopup > m_subMenuChild
Definition: CMenuBand.h:49
HWND m_menuOwner
Definition: CMenuBand.h:59
CComPtr< IOleWindow > m_site
Definition: CMenuBand.h:47
BOOL m_Show
Definition: CMenuBand.h:69
CComPtr< CMenuBand > m_childBand
Definition: CMenuBand.h:51
CComPtr< CMenuBand > m_parentBand
Definition: CMenuBand.h:52
HMENU m_trackedPopup
Definition: CMenuBand.h:72
CComPtr< IShellMenuCallback > m_psmc
Definition: CMenuBand.h:48
HMENU m_hmenu
Definition: CMenuBand.h:58
INT m_hotItem
Definition: CMenuBand.h:65
HWND m_topLevelWindow
Definition: CMenuBand.h:62
CComPtr< IMenuPopup > m_subMenuParent
Definition: CMenuBand.h:50
INT m_popupItem
Definition: CMenuBand.h:67
CMenuToolbarBase * m_hotBar
Definition: CMenuBand.h:64
CMenuStaticToolbar * m_staticToolbar
Definition: CMenuBand.h:44
BOOL m_shellBottom
Definition: CMenuBand.h:70
BOOL m_useBigIcons
Definition: CMenuBand.h:61
static CMenuFocusManager * AcquireManager()
#define NULL
Definition: types.h:112
#define FALSE
Definition: types.h:117

◆ ~CMenuBand()

CMenuBand::~CMenuBand ( )
virtual

Definition at line 60 of file CMenuBand.cpp.

61{
63
64 delete m_staticToolbar;
65 delete m_SFToolbar;
66
67 if (m_hmenu)
69}
static void ReleaseManager(CMenuFocusManager *obj)
BOOL WINAPI DestroyMenu(_In_ HMENU)

Member Function Documentation

◆ _BeforeCancelPopup()

HRESULT CMenuBand::_BeforeCancelPopup ( )

Definition at line 1101 of file CMenuBand.cpp.

1102{
1103 if (m_staticToolbar)
1105 if (m_SFToolbar)
1107 return S_OK;
1108}
HRESULT BeforeCancelPopup()
#define S_OK
Definition: intsafe.h:52

Referenced by CMenuFocusManager::MsgFilterHook().

◆ _CallCB()

HRESULT CMenuBand::_CallCB ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
UINT  id = 0,
LPITEMIDLIST  pidl = NULL 
)
private

Definition at line 778 of file CMenuBand.cpp.

779{
780 if (!m_psmc)
781 return S_FALSE;
782
783 SMDATA smData = { 0 };
784 smData.punk = static_cast<IShellMenu2*>(this);
785 smData.uId = id;
786 smData.uIdParent = m_uId;
787 smData.uIdAncestor = m_uIdAncestor;
788 smData.pidlItem = pidl;
790 smData.hmenu = m_hmenu;
791 if (m_SFToolbar)
793 HRESULT hr = m_psmc->CallbackSM(&smData, uMsg, wParam, lParam);
794 ILFree(smData.pidlFolder);
795 if (smData.psf)
796 smData.psf->Release();
797 return hr;
798}
UINT m_uIdAncestor
Definition: CMenuBand.h:55
UINT m_uId
Definition: CMenuBand.h:54
HRESULT GetShellFolder(DWORD *pdwFlags, LPITEMIDLIST *ppidl, REFIID riid, void **ppv)
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
GLuint id
Definition: glext.h:5910
ULONG Release()
void WINAPI ILFree(LPITEMIDLIST pidl)
Definition: pidl.c:929
HRESULT hr
Definition: shlfolder.c:183
PIDLIST_ABSOLUTE pidlFolder
Definition: shobjidl.idl:2630
IUnknown * punk
Definition: shobjidl.idl:2629
PUITEMID_CHILD pidlItem
Definition: shobjidl.idl:2631
UINT uIdAncestor
Definition: shobjidl.idl:2628
HMENU hmenu
Definition: shobjidl.idl:2624
IShellFolder * psf
Definition: shobjidl.idl:2632
UINT uIdParent
Definition: shobjidl.idl:2627
#define S_FALSE
Definition: winerror.h:2357
#define IID_PPV_ARG(Itype, ppType)

Referenced by _CallCBWithItemId(), _CallCBWithItemPidl(), Initialize(), and ShowDW().

◆ _CallCBWithItemId()

HRESULT CMenuBand::_CallCBWithItemId ( UINT  Id,
UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam 
)

Definition at line 768 of file CMenuBand.cpp.

769{
770 return _CallCB(uMsg, wParam, lParam, id);
771}
HRESULT _CallCB(UINT uMsg, WPARAM wParam, LPARAM lParam, UINT id=0, LPITEMIDLIST pidl=NULL)
Definition: CMenuBand.cpp:778

Referenced by CMenuStaticToolbar::FillToolbar(), CMenuStaticToolbar::InternalContextMenu(), CMenuStaticToolbar::InternalExecuteItem(), and CMenuStaticToolbar::InternalPopupItem().

◆ _CallCBWithItemPidl()

HRESULT CMenuBand::_CallCBWithItemPidl ( LPITEMIDLIST  pidl,
UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam 
)

Definition at line 773 of file CMenuBand.cpp.

774{
775 return _CallCB(uMsg, wParam, lParam, 0, pidl);
776}

Referenced by CMenuSFToolbar::FillToolbar(), and CMenuSFToolbar::InternalExecuteItem().

◆ _CancelCurrentPopup()

HRESULT CMenuBand::_CancelCurrentPopup ( )

Definition at line 1038 of file CMenuBand.cpp.

1039{
1040 if (m_subMenuChild)
1041 {
1043 return hr;
1044 }
1045
1046 if (m_trackedPopup)
1047 {
1049 return S_OK;
1050 }
1051
1052 return S_FALSE;
1053}
@ MPOS_CANCELLEVEL
Definition: shobjidl.idl:2470
#define WM_CANCELMODE
Definition: winuser.h:1625
#define SendMessage
Definition: winuser.h:5833

Referenced by CMenuToolbarBase::CancelCurrentPopup(), and CMenuToolbarBase::TrackContextMenu().

◆ _ChangeHotItem()

HRESULT CMenuBand::_ChangeHotItem ( CMenuToolbarBase tb,
INT  id,
DWORD  dwFlags 
)

Definition at line 880 of file CMenuBand.cpp.

881{
882 if (m_hotBar == tb && m_hotItem == id)
883 return S_FALSE;
884
885 TRACE("Hot item changed from %p %p, to %p %p\n", m_hotBar, m_hotItem, tb, id);
886
888
889 m_hotBar = tb;
890 m_hotItem = id;
893
895
896 return S_OK;
897}
HRESULT _KillPopupTimers()
Definition: CMenuBand.cpp:1119
HRESULT _MenuItemSelect(DWORD changeType)
Definition: CMenuBand.cpp:954
HRESULT ChangeHotItem(CMenuToolbarBase *toolbar, INT item, DWORD dwFlags)
@ MPOS_CHILDTRACKING
Definition: shobjidl.idl:2473
static const WCHAR tb[]
Definition: suminfo.c:285
#define TRACE(s)
Definition: solgame.cpp:4
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
Definition: wincrypt.h:1176

Referenced by CMenuToolbarBase::ChangeTrackedItem(), CMenuToolbarBase::KeyboardItemChange(), CMenuToolbarBase::PopupItem(), and CMenuFocusManager::ProcessMouseMove().

◆ _ChangePopupItem()

HRESULT CMenuBand::_ChangePopupItem ( CMenuToolbarBase tb,
INT  id 
)

Definition at line 899 of file CMenuBand.cpp.

900{
901 TRACE("Popup item changed from %p %p, to %p %p\n", m_popupBar, m_popupItem, tb, id);
902
903 m_popupBar = tb;
904 m_popupItem = id;
907
908 return S_OK;
909}
HRESULT ChangePopupItem(CMenuToolbarBase *toolbar, INT item)

Referenced by _SetChildBand(), and CMenuToolbarBase::PopupSubMenu().

◆ _DisableMouseTrack()

HRESULT CMenuBand::_DisableMouseTrack ( BOOL  bDisable)

Definition at line 1110 of file CMenuBand.cpp.

1111{
1112 if (m_staticToolbar)
1114 if (m_SFToolbar)
1115 m_SFToolbar->DisableMouseTrack(bDisable);
1116 return S_OK;
1117}
HRESULT DisableMouseTrack(BOOL bDisable)

Referenced by _TrackSubMenu().

◆ _GetTopLevelWindow()

HRESULT CMenuBand::_GetTopLevelWindow ( HWND topLevel)

Definition at line 874 of file CMenuBand.cpp.

875{
876 *topLevel = m_topLevelWindow;
877 return S_OK;
878}

Referenced by CMenuToolbarBase::KeyboardItemChange(), CMenuToolbarBase::OnCustomDraw(), and CMenuFocusManager::UpdateFocus().

◆ _HasSubMenu()

HRESULT CMenuBand::_HasSubMenu ( )

Definition at line 1151 of file CMenuBand.cpp.

1152{
1153 return m_popupBar ? S_OK : S_FALSE;
1154}

◆ _IsPopup()

HRESULT CMenuBand::_IsPopup ( )

Definition at line 620 of file CMenuBand.cpp.

621{
622 return !(m_dwFlags & SMINIT_VERTICAL);
623}
DWORD m_dwFlags
Definition: CMenuBand.h:56

Referenced by ShowDW(), and TranslateMenuMessage().

◆ _IsTracking()

HRESULT CMenuBand::_IsTracking ( )

Definition at line 625 of file CMenuBand.cpp.

626{
627 return m_popupBar != NULL;
628}

◆ _KeyboardItemChange()

HRESULT CMenuBand::_KeyboardItemChange ( DWORD  change)
private

Definition at line 911 of file CMenuBand.cpp.

912{
913 HRESULT hr;
915
916 if (!tb)
917 {
918 // If no hot item was selected choose the appropriate toolbar
919 if (change == VK_UP || change == VK_END)
920 {
921 if (m_staticToolbar)
923 else
924 tb = m_SFToolbar;
925 }
926 else if (change == VK_DOWN || change == VK_HOME)
927 {
928 if (m_SFToolbar)
929 tb = m_SFToolbar;
930 else
932 }
933 }
934
935 // Ask the first toolbar to change
936 hr = tb->KeyboardItemChange(change);
937
938 if (hr != S_FALSE)
939 return hr;
940
941 // Select the second toolbar based on the first
944 else if (m_SFToolbar)
945 tb = m_SFToolbar;
946
947 if (!tb)
948 return hr;
949
950 // Ask the second toolbar to change
951 return tb->KeyboardItemChange(change == VK_DOWN ? VK_HOME : VK_END);
952}
#define VK_UP
Definition: winuser.h:2215
#define VK_END
Definition: winuser.h:2212
#define VK_HOME
Definition: winuser.h:2213
#define VK_DOWN
Definition: winuser.h:2217

Referenced by _MenuItemSelect(), and Exec().

◆ _KillPopupTimers()

HRESULT CMenuBand::_KillPopupTimers ( )

Definition at line 1119 of file CMenuBand.cpp.

1120{
1121 HRESULT hr = S_OK;
1122 if (m_staticToolbar)
1124 if (FAILED(hr))
1125 return hr;
1126
1127 if (m_SFToolbar)
1129
1130 return hr;
1131}
HRESULT KillPopupTimer()
#define FAILED(hr)
Definition: intsafe.h:51

Referenced by _ChangeHotItem(), CMenuToolbarBase::PrepareExecuteItem(), and CMenuToolbarBase::TrackContextMenu().

◆ _MenuBarMouseDown()

HRESULT CMenuBand::_MenuBarMouseDown ( HWND  hwnd,
INT  item,
BOOL  isLButton 
)

Definition at line 1133 of file CMenuBand.cpp.

1134{
1138 m_SFToolbar->MenuBarMouseDown(item, isLButton);
1139 return S_OK;
1140}
HRESULT IsWindowOwner(HWND hwnd)
HRESULT MenuBarMouseDown(INT iIndex, BOOL isLButton)
static ATOM item
Definition: dde.c:856
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4023

◆ _MenuBarMouseUp()

HRESULT CMenuBand::_MenuBarMouseUp ( HWND  hwnd,
INT  item,
BOOL  isLButton 
)

Definition at line 1142 of file CMenuBand.cpp.

1143{
1145 m_staticToolbar->MenuBarMouseUp(item, isLButton);
1147 m_SFToolbar->MenuBarMouseUp(item, isLButton);
1148 return S_OK;
1149}
HRESULT MenuBarMouseUp(INT iIndex, BOOL isLButton)

◆ _MenuItemSelect()

HRESULT CMenuBand::_MenuItemSelect ( DWORD  changeType)

Definition at line 954 of file CMenuBand.cpp.

955{
956 // Needed to prevent the this point from vanishing mid-function
957 CComPtr<CMenuBand> safeThis = this;
958 HRESULT hr;
959
960 if (m_dwFlags & SMINIT_VERTICAL)
961 {
962 switch (changeType)
963 {
964 case VK_UP:
965 case VK_DOWN:
966 return _KeyboardItemChange(changeType);
967
968 // TODO: Left/Right across multi-column menus, if they ever work.
969 case VK_LEFT:
970 changeType = MPOS_SELECTLEFT;
971 break;
972 case VK_RIGHT:
973 changeType = MPOS_SELECTRIGHT;
974 break;
975 }
976 }
977 else
978 {
979 // In horizontal menubars, left/right are equivalent to vertical's up/down
980 switch (changeType)
981 {
982 case VK_LEFT:
984 if (hr != S_FALSE)
985 return hr;
986 case VK_RIGHT:
988 if (hr != S_FALSE)
989 return hr;
990 }
991 }
992
993 // In this context, the parent is the CMenuDeskBar, so when it bubbles upward,
994 // it is notifying the deskbar, and not the the higher-level menu.
995 // Same for the child: since it points to a CMenuDeskBar, it's not just recursing.
996 switch (changeType)
997 {
998 case MPOS_EXECUTE:
999 {
1001 int item = m_hotItem;
1002 tb->PrepareExecuteItem(item);
1003 if (m_subMenuParent)
1004 {
1005 m_subMenuParent->OnSelect(changeType);
1006 }
1007 TRACE("Menu closed, executing item...\n");
1008 tb->ExecuteItem();
1009 break;
1010 }
1011 case MPOS_SELECTLEFT:
1012 if (m_parentBand && m_parentBand->_IsPopup()==S_FALSE)
1013 return m_parentBand->_MenuItemSelect(VK_LEFT);
1014 if (m_subMenuChild)
1015 return m_subMenuChild->OnSelect(MPOS_CANCELLEVEL);
1016 if (!m_subMenuParent)
1017 return S_OK;
1018 return m_subMenuParent->OnSelect(MPOS_CANCELLEVEL);
1019
1020 case MPOS_SELECTRIGHT:
1021 if (m_hotBar && m_hotItem >= 0 && m_hotBar->PopupItem(m_hotItem, TRUE) == S_OK)
1022 return S_FALSE;
1023 if (m_parentBand)
1024 return m_parentBand->_MenuItemSelect(VK_RIGHT);
1025 if (!m_subMenuParent)
1026 return S_OK;
1027 return m_subMenuParent->OnSelect(MPOS_SELECTRIGHT);
1028
1029 default:
1030 if (!m_subMenuParent)
1031 return S_OK;
1032 return m_subMenuParent->OnSelect(changeType);
1033 }
1034
1035 return S_OK;
1036}
HRESULT _KeyboardItemChange(DWORD change)
Definition: CMenuBand.cpp:911
HRESULT PopupItem(INT iItem, BOOL keyInitiated)
#define TRUE
Definition: types.h:120
@ MPOS_SELECTRIGHT
Definition: shobjidl.idl:2472
#define VK_LEFT
Definition: winuser.h:2214
#define VK_RIGHT
Definition: winuser.h:2216

Referenced by _ChangeHotItem(), _TrackContextMenu(), CMenuFocusManager::GetMsgHook(), CMenuFocusManager::MsgFilterHook(), and CMenuToolbarBase::ProcessClick().

◆ _OnPopupSubMenu()

HRESULT CMenuBand::_OnPopupSubMenu ( IShellMenu childShellMenu,
POINTL pAt,
RECTL pExclude,
BOOL  mouseInitiated 
)

Definition at line 1055 of file CMenuBand.cpp.

1056{
1057 HRESULT hr = 0;
1058 CComPtr<IBandSite> pBandSite;
1059 CComPtr<IDeskBar> pDeskBar;
1060
1061 // Create the necessary objects
1064 return hr;
1065
1068 return hr;
1069
1070 hr = pDeskBar->SetClient(pBandSite);
1072 return hr;
1073
1074 hr = pBandSite->AddBand(childShellMenu);
1076 return hr;
1077
1078 //
1079 CComPtr<IMenuPopup> popup;
1080 hr = pDeskBar->QueryInterface(IID_PPV_ARG(IMenuPopup, &popup));
1082 return hr;
1083
1084 m_subMenuChild = popup;
1085
1086 if (m_subMenuParent)
1088 else
1089 IUnknown_SetSite(popup, m_site);
1090
1092
1093 if (keyInitiated && m_dwFlags & SMINIT_VERTICAL)
1095
1096 popup->Popup(pAt, pExclude, flags);
1097
1098 return S_OK;
1099}
HRESULT WINAPI IUnknown_SetSite(IUnknown *obj, IUnknown *site)
Definition: ordinal.c:1407
unsigned long DWORD
Definition: ntddk_ex.h:95
GLbitfield flags
Definition: glext.h:7161
@ MPPF_INITIALSELECT
Definition: shobjidl.idl:2479
HRESULT QueryInterface([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
#define CMenuSite_CreateInstance
Definition: shellmenu.h:87
#define CMenuDeskBar_CreateInstance
Definition: shellmenu.h:75
#define FAILED_UNEXPECTEDLY(hr)
Definition: shellutils.h:82

Referenced by CMenuToolbarBase::PopupSubMenu().

◆ _SetChildBand()

HRESULT CMenuBand::_SetChildBand ( CMenuBand child)

Definition at line 603 of file CMenuBand.cpp.

604{
606 if (!child)
607 {
609 }
610 return S_OK;
611}
HRESULT _ChangePopupItem(CMenuToolbarBase *tb, INT id)
Definition: CMenuBand.cpp:899
static HWND child
Definition: cursoricon.c:298

Referenced by CMenuFocusManager::PopMenuBar(), CMenuFocusManager::PopMenuPopup(), and CMenuFocusManager::PushMenuPopup().

◆ _SetParentBand()

HRESULT CMenuBand::_SetParentBand ( CMenuBand parent)

Definition at line 614 of file CMenuBand.cpp.

615{
617 return S_OK;
618}
r parent
Definition: btrfs.c:3010

Referenced by CMenuFocusManager::PushMenuPopup().

◆ _TrackContextMenu()

HRESULT CMenuBand::_TrackContextMenu ( IContextMenu popup,
INT  x,
INT  y 
)

Definition at line 821 of file CMenuBand.cpp.

822{
823 HRESULT hr;
824 UINT uCommand;
825
826 // Ensure that the menu doesn't disappear on us
827 CComPtr<IContextMenu> ctxMenu = contextMenu;
828
829 HMENU popup = CreatePopupMenu();
830
831 if (popup == NULL)
832 return E_FAIL;
833
834 TRACE("Before Query\n");
835 hr = contextMenu->QueryContextMenu(popup, 0, 0, UINT_MAX, CMF_NORMAL);
837 {
838 TRACE("Query failed\n");
839 DestroyMenu(popup);
840 return hr;
841 }
842
844
846
847 TRACE("Before Tracking\n");
848 uCommand = ::TrackPopupMenuEx(popup, TPM_RETURNCMD, x, y, hwnd, NULL);
849
851
852 if (uCommand != 0)
853 {
855
856 TRACE("Before InvokeCommand\n");
857 CMINVOKECOMMANDINFO cmi = { 0 };
858 cmi.cbSize = sizeof(cmi);
859 cmi.lpVerb = MAKEINTRESOURCEA(uCommand);
860 cmi.hwnd = hwnd;
861 hr = contextMenu->InvokeCommand(&cmi);
862 TRACE("InvokeCommand returned hr=%08x\n", hr);
863 }
864 else
865 {
866 TRACE("TrackPopupMenu failed. Code=%d, LastError=%d\n", uCommand, GetLastError());
867 hr = S_FALSE;
868 }
869
870 DestroyMenu(popup);
871 return hr;
872}
HRESULT PushTrackedPopup(HMENU popup)
HRESULT PopTrackedPopup(HMENU popup)
#define E_FAIL
Definition: ddrawi.h:102
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
#define UINT_MAX
Definition: limits.h:41
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
Definition: ordinal.c:63
unsigned int UINT
Definition: ndis.h:50
DWORD WINAPI GetLastError(void)
Definition: except.c:1042
HMENU WINAPI CreatePopupMenu(void)
Definition: menu.c:838
BOOL WINAPI TrackPopupMenuEx(_In_ HMENU, _In_ UINT, _In_ int, _In_ int, _In_ HWND, _In_opt_ LPTPMPARAMS)
#define MAKEINTRESOURCEA(i)
Definition: winuser.h:581
#define TPM_RETURNCMD
Definition: winuser.h:2377

Referenced by CMenuToolbarBase::TrackContextMenu().

◆ _TrackSubMenu()

HRESULT CMenuBand::_TrackSubMenu ( HMENU  popup,
INT  x,
INT  y,
RECT rcExclude 
)

Definition at line 800 of file CMenuBand.cpp.

801{
802 TPMPARAMS params = { sizeof(TPMPARAMS), rcExclude };
803 UINT flags = TPM_VERPOSANIMATION | TPM_VERTICAL | TPM_LEFTALIGN;
805
806 m_trackedPopup = popup;
808
810 ::TrackPopupMenuEx(popup, flags, x, y, hwnd, &params);
812
815
817
818 return S_OK;
819}
HRESULT _DisableMouseTrack(BOOL bDisable)
Definition: CMenuBand.cpp:1110
GLenum const GLfloat * params
Definition: glext.h:5645
#define TPM_LEFTALIGN
Definition: winuser.h:2367
struct tagTPMPARAMS TPMPARAMS
#define TPM_VERTICAL
Definition: winuser.h:2372

Referenced by CMenuToolbarBase::PopupSubMenu().

◆ AdjustForTheme()

HRESULT CMenuBand::AdjustForTheme ( BOOL  bFlatStyle)

Definition at line 1156 of file CMenuBand.cpp.

1157{
1158 return IUnknown_QueryServiceExec(m_site, SID_SMenuPopup, &CGID_MenuDeskBar, 4, bFlatStyle, NULL, NULL);
1159}
HRESULT WINAPI IUnknown_QueryServiceExec(IUnknown *lpUnknown, REFIID service, const GUID *group, DWORD cmdId, DWORD cmdOpt, VARIANT *pIn, VARIANT *pOut)
Definition: ordinal.c:1549

Referenced by CMenuToolbarBase::CreateToolbar(), and OnWinEvent().

◆ CloseDW()

HRESULT STDMETHODCALLTYPE CMenuBand::CloseDW ( DWORD  dwReserved)
virtual

Implements IDockingWindow.

Definition at line 443 of file CMenuBand.cpp.

444{
445 if (m_subMenuChild)
446 {
448 }
449
450 if (m_subMenuChild)
451 {
452 TRACE("Child object should have removed itself.\n");
453 }
454
455 ShowDW(FALSE);
456
457 if (m_staticToolbar != NULL)
458 {
460 }
461
462 if (m_SFToolbar != NULL)
463 {
465 }
466
467 if (m_site) m_site.Release();
470 if (m_childBand) m_childBand.Release();
471 if (m_parentBand) m_parentBand.Release();
472
473 return S_OK;
474}
void Release()
Definition: atlcomcli.h:147
virtual HRESULT STDMETHODCALLTYPE ShowDW(BOOL fShow)
Definition: CMenuBand.cpp:391

◆ ContextSensitiveHelp()

HRESULT STDMETHODCALLTYPE CMenuBand::ContextSensitiveHelp ( BOOL  fEnterMode)
virtual

Implements IOleWindow.

Definition at line 1185 of file CMenuBand.cpp.

1186{
1188 return S_OK;
1189}
#define UNIMPLEMENTED
Definition: debug.h:115

◆ DoDefaultAction()

HRESULT STDMETHODCALLTYPE CMenuBand::DoDefaultAction ( THIS  )
virtual

Definition at line 1251 of file CMenuBand.cpp.

1252{
1254 return S_OK;
1255}

◆ Exec()

HRESULT STDMETHODCALLTYPE CMenuBand::Exec ( const GUID pguidCmdGroup,
DWORD  nCmdID,
DWORD  nCmdexecopt,
VARIANT pvaIn,
VARIANT pvaOut 
)
virtual

Implements IOleCommandTarget.

Definition at line 506 of file CMenuBand.cpp.

507{
508 if (!pguidCmdGroup)
509 return E_FAIL;
510
511 if (IsEqualGUID(*pguidCmdGroup, CLSID_MenuBand))
512 {
513 if (nCmdID == 16) // set (big) icon size
514 {
515 this->m_useBigIcons = nCmdexecopt == 2;
516 return S_OK;
517 }
518 else if (nCmdID == 19) // popup-related
519 {
520 return S_FALSE;
521 }
522 else if (nCmdID == 5) // select an item
523 {
524 if (nCmdexecopt == 0) // first
525 {
527 }
528 else // last
529 {
531 }
532 return S_FALSE;
533 }
534
535 return S_FALSE;
536 }
537
539 return S_OK;
540}
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147

◆ GetBandInfo()

HRESULT STDMETHODCALLTYPE CMenuBand::GetBandInfo ( DWORD  dwBandID,
DWORD  dwViewMode,
DESKBANDINFO pdbi 
)
virtual

Implements IDeskBand.

Definition at line 342 of file CMenuBand.cpp.

346{
347 SIZE minStatic = { 0 };
348 SIZE minShlFld = { 0 };
349 SIZE maxStatic = { 0 };
350 SIZE maxShlFld = { 0 };
351 SIZE intStatic = { 0 };
352 SIZE intShlFld = { 0 };
353
354 HRESULT hr = S_OK;
355
356 if (m_staticToolbar != NULL)
357 hr = m_staticToolbar->GetSizes(&minStatic, &maxStatic, &intStatic);
359 return hr;
360
361 if (m_SFToolbar != NULL)
362 hr = m_SFToolbar->GetSizes(&minShlFld, &maxShlFld, &intShlFld);
364 return hr;
365
367 return E_FAIL;
368
369 if (m_dwFlags & SMINIT_VERTICAL)
370 {
371 pdbi->ptMinSize.x = max(minStatic.cx, minShlFld.cx) + 20;
372 pdbi->ptMinSize.y = minStatic.cy + minShlFld.cy;
373 pdbi->ptMaxSize.x = max(maxStatic.cx, maxShlFld.cx) + 20;
374 pdbi->ptMaxSize.y = maxStatic.cy + maxShlFld.cy;
375 pdbi->dwModeFlags = DBIMF_VARIABLEHEIGHT;
376 }
377 else
378 {
379 pdbi->ptMinSize.x = minStatic.cx + minShlFld.cx;
380 pdbi->ptMinSize.y = max(minStatic.cy, minShlFld.cy);
381 pdbi->ptMaxSize.x = maxStatic.cx + maxShlFld.cx;
382 pdbi->ptMaxSize.y = max(maxStatic.cy, maxShlFld.cy);
383 }
384 pdbi->ptIntegral.x = max(intStatic.cx, intShlFld.cx);
385 pdbi->ptIntegral.y = max(intStatic.cy, intShlFld.cy);
386 pdbi->ptActual = pdbi->ptMinSize;
387
388 return S_OK;
389}
HRESULT GetSizes(SIZE *pMinSize, SIZE *pMaxSize, SIZE *pIntegralSize)
LONG y
Definition: windef.h:330
LONG x
Definition: windef.h:329
LONG cx
Definition: kdterminal.h:27
LONG cy
Definition: kdterminal.h:28
#define max(a, b)
Definition: svc.c:63

◆ GetBottom()

HRESULT STDMETHODCALLTYPE CMenuBand::GetBottom ( THIS  )
virtual

Definition at line 1227 of file CMenuBand.cpp.

1228{
1230 return S_OK;
1231}

◆ GetClassID()

HRESULT STDMETHODCALLTYPE CMenuBand::GetClassID ( CLSID pClassID)
virtual

Implements IPersist.

Definition at line 1300 of file CMenuBand.cpp.

1301{
1303 return S_OK;
1304}

◆ GetClient()

HRESULT STDMETHODCALLTYPE CMenuBand::GetClient ( IUnknown **  ppunkClient)
virtual

Implements IDeskBar.

Definition at line 650 of file CMenuBand.cpp.

651{
652 if (!ppunkClient)
653 return E_POINTER;
654 *ppunkClient = NULL;
655
656 if (m_subMenuChild)
657 {
658 *ppunkClient = m_subMenuChild;
659 (*ppunkClient)->AddRef();
660 }
661
662 return S_OK;
663}
#define E_POINTER
Definition: winerror.h:2365

◆ GetMenu()

HRESULT STDMETHODCALLTYPE CMenuBand::GetMenu ( HMENU phmenu,
HWND phwnd,
DWORD pdwFlags 
)
virtual

Definition at line 176 of file CMenuBand.cpp.

180{
181 if (m_staticToolbar == NULL)
182 return E_FAIL;
183
184 return m_staticToolbar->GetMenu(phmenu, phwnd, pdwFlags);
185}
HRESULT GetMenu(HMENU *phmenu, HWND *phwnd, DWORD *pdwFlags)

◆ GetMenuInfo()

HRESULT STDMETHODCALLTYPE CMenuBand::GetMenuInfo ( IShellMenuCallback **  ppsmc,
UINT puId,
UINT puIdAncestor,
DWORD pdwFlags 
)
virtual

Definition at line 91 of file CMenuBand.cpp.

96{
97 if (!pdwFlags) // maybe?
98 return E_INVALIDARG;
99
100 if (ppsmc)
101 {
102 *ppsmc = m_psmc;
103 if (*ppsmc)
104 (*ppsmc)->AddRef();
105 }
106
107 if (puId)
108 *puId = m_uId;
109
110 if (puIdAncestor)
111 *puIdAncestor = m_uIdAncestor;
112
113 *pdwFlags = m_dwFlags;
114
115 return S_OK;
116}
#define E_INVALIDARG
Definition: ddrawi.h:101

Referenced by CMenuSFToolbar::InternalPopupItem().

◆ GetParentSite()

HRESULT STDMETHODCALLTYPE CMenuBand::GetParentSite ( THIS  )
virtual

Definition at line 1239 of file CMenuBand.cpp.

1240{
1242 return S_OK;
1243}

◆ GetShellFolder()

HRESULT STDMETHODCALLTYPE CMenuBand::GetShellFolder ( DWORD pdwFlags,
LPITEMIDLIST ppidl,
REFIID  riid,
void **  ppv 
)
virtual

Definition at line 717 of file CMenuBand.cpp.

718{
719 if (m_SFToolbar)
720 return m_SFToolbar->GetShellFolder(pdwFlags, ppidl, riid, ppv);
721 return E_FAIL;
722}
REFIID riid
Definition: atlbase.h:39
REFIID LPVOID * ppv
Definition: atlbase.h:39

◆ GetSite()

HRESULT STDMETHODCALLTYPE CMenuBand::GetSite ( REFIID  riid,
PVOID ppvSite 
)
virtual

Implements IObjectWithSite.

Definition at line 251 of file CMenuBand.cpp.

252{
253 if (m_site == NULL)
254 return E_FAIL;
255
256 return m_site->QueryInterface(riid, ppvSite);
257}

Referenced by CMenuFocusManager::UpdateFocus().

◆ GetSizeMax()

HRESULT STDMETHODCALLTYPE CMenuBand::GetSizeMax ( ULARGE_INTEGER pcbSize)
virtual

Implements IPersistStream.

Definition at line 1294 of file CMenuBand.cpp.

1295{
1297 return S_OK;
1298}

◆ GetState() [1/2]

HRESULT STDMETHODCALLTYPE CMenuBand::GetState ( LPSMDATA  psmd)
virtual

Definition at line 1167 of file CMenuBand.cpp.

1168{
1170 return S_OK;
1171}

◆ GetState() [2/2]

HRESULT STDMETHODCALLTYPE CMenuBand::GetState ( THIS  )
virtual

Definition at line 1245 of file CMenuBand.cpp.

1246{
1248 return S_OK;
1249}

◆ GetSubMenu()

HRESULT STDMETHODCALLTYPE CMenuBand::GetSubMenu ( THIS  )
virtual

Definition at line 1191 of file CMenuBand.cpp.

1192{
1194 return S_OK;
1195}

◆ GetTop()

HRESULT STDMETHODCALLTYPE CMenuBand::GetTop ( THIS  )
virtual

Definition at line 1221 of file CMenuBand.cpp.

1222{
1224 return S_OK;
1225}

◆ GetTracked()

HRESULT STDMETHODCALLTYPE CMenuBand::GetTracked ( THIS  )
virtual

Definition at line 1233 of file CMenuBand.cpp.

1234{
1236 return S_OK;
1237}

◆ GetWindow()

HRESULT STDMETHODCALLTYPE CMenuBand::GetWindow ( HWND phwnd)
virtual

Implements IOleWindow.

Definition at line 259 of file CMenuBand.cpp.

260{
261 if (m_SFToolbar != NULL)
262 return m_SFToolbar->GetWindow(phwnd);
263
264 if (m_staticToolbar != NULL)
265 return m_staticToolbar->GetWindow(phwnd);
266
267 if (phwnd) *phwnd = NULL;
268
269 return E_FAIL;
270}
HRESULT GetWindow(HWND *phwnd)

◆ HasFocusIO()

HRESULT STDMETHODCALLTYPE CMenuBand::HasFocusIO ( )
virtual

Definition at line 1263 of file CMenuBand.cpp.

1264{
1265 if (m_popupBar)
1266 return S_OK;
1267 return S_FALSE;
1268}

◆ Initialize()

HRESULT STDMETHODCALLTYPE CMenuBand::Initialize ( IShellMenuCallback psmc,
UINT  uId,
UINT  uIdAncestor,
DWORD  dwFlags 
)
virtual

Definition at line 71 of file CMenuBand.cpp.

76{
77 if (m_psmc != psmc)
78 m_psmc = psmc;
79 m_uId = uId;
80 m_uIdAncestor = uIdAncestor;
82
83 if (m_psmc)
84 {
85 _CallCB(SMC_CREATE, 0, reinterpret_cast<LPARAM>(&m_UserData));
86 }
87
88 return S_OK;
89}
PVOID m_UserData
Definition: CMenuBand.h:57
LONG_PTR LPARAM
Definition: windef.h:208

◆ InvalidateItem()

HRESULT STDMETHODCALLTYPE CMenuBand::InvalidateItem ( LPSMDATA  psmd,
DWORD  dwFlags 
)
virtual

Definition at line 1161 of file CMenuBand.cpp.

1162{
1164 return S_OK;
1165}

◆ IsDirty()

HRESULT STDMETHODCALLTYPE CMenuBand::IsDirty ( void  )
virtual

Implements IPersistStream.

Definition at line 1276 of file CMenuBand.cpp.

1277{
1279 return S_OK;
1280}

◆ IsEmpty()

HRESULT STDMETHODCALLTYPE CMenuBand::IsEmpty ( THIS  )
virtual

Definition at line 1257 of file CMenuBand.cpp.

1258{
1260 return S_OK;
1261}

◆ IsMenuMessage()

HRESULT STDMETHODCALLTYPE CMenuBand::IsMenuMessage ( MSG pmsg)
virtual

Implements IMenuBand.

Definition at line 665 of file CMenuBand.cpp.

666{
667 return S_FALSE;
668}

◆ IsWindowOwner()

HRESULT STDMETHODCALLTYPE CMenuBand::IsWindowOwner ( HWND  hWnd)
virtual

Definition at line 757 of file CMenuBand.cpp.

758{
760 return S_OK;
761
763 return S_OK;
764
765 return S_FALSE;
766}
HWND hWnd
Definition: settings.c:17

Referenced by CMenuFocusManager::GetMsgHook(), and CMenuFocusManager::MsgFilterHook().

◆ Load()

HRESULT STDMETHODCALLTYPE CMenuBand::Load ( IStream pStm)
virtual

Implements IPersistStream.

Definition at line 1282 of file CMenuBand.cpp.

1283{
1285 return S_OK;
1286}

◆ OnPosRectChangeDB()

HRESULT STDMETHODCALLTYPE CMenuBand::OnPosRectChangeDB ( RECT prc)
virtual

Implements IDeskBar.

Definition at line 272 of file CMenuBand.cpp.

273{
274 SIZE maxStatic = { 0 };
275 SIZE maxShlFld = { 0 };
276 HRESULT hr = S_OK;
277
278 if (m_staticToolbar != NULL)
279 hr = m_staticToolbar->GetSizes(NULL, &maxStatic, NULL);
281 return hr;
282
283 if (m_SFToolbar != NULL)
284 hr = m_SFToolbar->GetSizes(NULL, &maxShlFld, NULL);
286 return hr;
287
289 return E_FAIL;
290
291 int sy = min(prc->bottom - prc->top, maxStatic.cy + maxShlFld.cy);
292
293 int syStatic = maxStatic.cy;
294 int syShlFld = sy - syStatic;
295
296 // TODO: Windows has a more complex system to decide ordering.
297 // Because we only support two toolbars at once, this is enough for us.
298 if (m_shellBottom)
299 {
300 // Static menu on top
301 if (m_SFToolbar)
302 {
304 prc->left,
305 prc->top + syStatic,
306 prc->right - prc->left,
307 syShlFld);
308 }
309 if (m_staticToolbar)
310 {
312 prc->left,
313 prc->top,
314 prc->right - prc->left,
315 syStatic);
316 }
317 }
318 else
319 {
320 // Folder menu on top
321 if (m_SFToolbar)
322 {
324 prc->left,
325 prc->top,
326 prc->right - prc->left,
327 syShlFld);
328 }
329 if (m_staticToolbar)
330 {
332 prc->left,
333 prc->top + syShlFld,
334 prc->right - prc->left,
335 syStatic);
336 }
337 }
338
339 return S_OK;
340}
HRESULT SetPosSize(int x, int y, int cx, int cy)
#define min(a, b)
Definition: monoChain.cc:55
_Out_ LPRECT prc
Definition: ntgdi.h:1658
LONG right
Definition: windef.h:308
LONG bottom
Definition: windef.h:309
LONG top
Definition: windef.h:307
LONG left
Definition: windef.h:306

◆ OnSelect()

HRESULT STDMETHODCALLTYPE CMenuBand::OnSelect ( DWORD  dwSelectType)
virtual

Implements IMenuPopup.

Definition at line 558 of file CMenuBand.cpp.

559{
560 // When called from outside, this is straightforward:
561 // Things that a submenu needs to know, are spread down, and
562 // things that the parent needs to know, are spread up. No drama.
563 // The fun is in _MenuItemSelect (internal method).
564 switch (dwSelectType)
565 {
567 if (!m_subMenuParent)
568 break;
569 // TODO: Cancel timers?
570 return m_subMenuParent->OnSelect(dwSelectType);
571 case MPOS_SELECTLEFT:
572 if (m_subMenuChild)
574 if (!m_subMenuParent)
575 break;
576 return m_subMenuParent->OnSelect(dwSelectType);
577 case MPOS_SELECTRIGHT:
578 if (!m_subMenuParent)
579 break;
580 return m_subMenuParent->OnSelect(dwSelectType);
581 case MPOS_EXECUTE:
582 case MPOS_FULLCANCEL:
583 if (m_subMenuChild)
584 m_subMenuChild->OnSelect(dwSelectType);
585 if (!m_subMenuParent)
586 break;
587 return m_subMenuParent->OnSelect(dwSelectType);
588 case MPOS_CANCELLEVEL:
589 if (m_subMenuChild)
590 m_subMenuChild->OnSelect(dwSelectType);
591 break;
592 }
593 return S_FALSE;
594}

◆ OnWinEvent()

HRESULT STDMETHODCALLTYPE CMenuBand::OnWinEvent ( HWND  hWnd,
UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
LRESULT theResult 
)
virtual

Definition at line 724 of file CMenuBand.cpp.

725{
726 if (theResult)
727 *theResult = 0;
728
729 if (uMsg == WM_WININICHANGE && wParam == SPI_SETFLATMENU)
730 {
731 BOOL bFlatMenus;
732 SystemParametersInfo(SPI_GETFLATMENU, 0, &bFlatMenus, 0);
733 AdjustForTheme(bFlatMenus);
734
735 if (m_staticToolbar)
736 m_staticToolbar->OnWinEvent(hWnd, uMsg, wParam, lParam, theResult);
737
738 if (m_SFToolbar)
739 m_SFToolbar->OnWinEvent(hWnd, uMsg, wParam, lParam, theResult);
740
741 return S_OK;
742 }
743
745 {
746 return m_staticToolbar->OnWinEvent(hWnd, uMsg, wParam, lParam, theResult);
747 }
748
750 {
751 return m_SFToolbar->OnWinEvent(hWnd, uMsg, wParam, lParam, theResult);
752 }
753
754 return S_FALSE;
755}
HRESULT AdjustForTheme(BOOL bFlatStyle)
Definition: CMenuBand.cpp:1156
HRESULT OnWinEvent(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult)
unsigned int BOOL
Definition: ntddk_ex.h:94
#define WM_WININICHANGE
Definition: winuser.h:1620
#define SystemParametersInfo
Definition: winuser.h:5848

◆ Popup()

HRESULT STDMETHODCALLTYPE CMenuBand::Popup ( POINTL ppt,
RECTL prcExclude,
MP_POPUPFLAGS  dwFlags 
)
virtual

Implements IMenuPopup.

Definition at line 552 of file CMenuBand.cpp.

553{
555 return S_OK;
556}

◆ QueryService()

HRESULT STDMETHODCALLTYPE CMenuBand::QueryService ( REFGUID  guidService,
REFIID  riid,
void **  ppvObject 
)
virtual

Implements IServiceProvider.

Definition at line 542 of file CMenuBand.cpp.

543{
544 if (IsEqualIID(guidService, SID_SMenuBandChild) ||
545 IsEqualIID(guidService, SID_SMenuBandBottom) ||
546 IsEqualIID(guidService, SID_SMenuBandBottomSelected))
547 return this->QueryInterface(riid, ppvObject);
548 WARN("Unknown service requested %s\n", wine_dbgstr_guid(&guidService));
549 return E_NOINTERFACE;
550}
#define WARN(fmt,...)
Definition: debug.h:112
#define IsEqualIID(riid1, riid2)
Definition: guiddef.h:95
static __inline const char * wine_dbgstr_guid(const GUID *id)
Definition: debug.h:197
_In_ void _In_ PCCERT_CONTEXT _In_opt_ LPFILETIME _In_ DWORD _In_ DWORD _Outptr_opt_ void ** ppvObject
Definition: wincrypt.h:6082
#define E_NOINTERFACE
Definition: winerror.h:2364

◆ QueryStatus()

HRESULT STDMETHODCALLTYPE CMenuBand::QueryStatus ( const GUID pguidCmdGroup,
ULONG  cCmds,
OLECMD  prgCmds[],
OLECMDTEXT pCmdText 
)
virtual

Implements IOleCommandTarget.

Definition at line 1306 of file CMenuBand.cpp.

1307{
1309 return S_OK;
1310}

◆ ResizeBorderDW()

HRESULT STDMETHODCALLTYPE CMenuBand::ResizeBorderDW ( LPCRECT  prcBorder,
IUnknown punkToolbarSite,
BOOL  fReserved 
)
virtual

Implements IDockingWindow.

Definition at line 1179 of file CMenuBand.cpp.

1180{
1182 return S_OK;
1183}

◆ Save()

HRESULT STDMETHODCALLTYPE CMenuBand::Save ( IStream pStm,
BOOL  fClearDirty 
)
virtual

Implements IPersistStream.

Definition at line 1288 of file CMenuBand.cpp.

1289{
1291 return S_OK;
1292}

◆ SetClient()

HRESULT STDMETHODCALLTYPE CMenuBand::SetClient ( IUnknown punkClient)
virtual

Implements IDeskBar.

Definition at line 630 of file CMenuBand.cpp.

631{
632 CComPtr<IMenuPopup> child = m_subMenuChild;
633
635
636 if (child)
637 {
639 child.Release();
640 }
641
642 if (!punkClient)
643 {
644 return S_OK;
645 }
646
648}
nsrefcnt Release()

◆ SetMenu()

HRESULT STDMETHODCALLTYPE CMenuBand::SetMenu ( HMENU  hmenu,
HWND  hwnd,
DWORD  dwFlags 
)
virtual

Definition at line 118 of file CMenuBand.cpp.

122{
123 HRESULT hr;
124
125 TRACE("CMenuBand::SetMenu called, hmenu=%p; hwnd=%p, flags=%x\n", hmenu, hwnd, dwFlags);
126
127 BOOL created = FALSE;
128
129 if (m_hmenu && m_hmenu != hmenu)
130 {
132 m_hmenu = NULL;
133 }
134
135 m_hmenu = hmenu;
137
138 if (m_hmenu && m_staticToolbar == NULL)
139 {
141 created = true;
142 }
143
144 if (m_staticToolbar)
145 {
148 return hr;
149 }
150
151 if (m_site)
152 {
154
155 hr = m_site->GetWindow(&hwndParent);
157 return hr;
158
159 if (created)
160 {
163 return hr;
164
166 }
167 else
168 {
170 }
171 }
172
173 return hr;
174}
virtual HRESULT FillToolbar(BOOL clearFirst=FALSE)
HRESULT SetMenu(HMENU hmenu, HWND hwnd, DWORD dwFlags)
HRESULT CreateToolbar(HWND hwndParent, DWORD dwFlags)
static HWND hwndParent
Definition: cryptui.c:300
static HMENU hmenu
Definition: win.c:66

◆ SetMenuToolbar()

HRESULT STDMETHODCALLTYPE CMenuBand::SetMenuToolbar ( IUnknown punk,
DWORD  dwFlags 
)
virtual

Definition at line 1173 of file CMenuBand.cpp.

1174{
1176 return S_OK;
1177}

◆ SetMinWidth()

HRESULT STDMETHODCALLTYPE CMenuBand::SetMinWidth ( THIS  )
virtual

Definition at line 1203 of file CMenuBand.cpp.

1204{
1206 return S_OK;
1207}

◆ SetNoBorder()

HRESULT STDMETHODCALLTYPE CMenuBand::SetNoBorder ( THIS  )
virtual

Definition at line 1209 of file CMenuBand.cpp.

1210{
1212 return S_OK;
1213}

◆ SetShellFolder()

HRESULT STDMETHODCALLTYPE CMenuBand::SetShellFolder ( IShellFolder psf,
LPCITEMIDLIST  pidlFolder,
HKEY  hKey,
DWORD  dwFlags 
)
virtual

Definition at line 683 of file CMenuBand.cpp.

684{
685 if (!psf)
686 return E_INVALIDARG;
687
688 if (m_SFToolbar == NULL)
689 {
690 m_SFToolbar = new CMenuSFToolbar(this);
691 }
692
693 HRESULT hr = m_SFToolbar->SetShellFolder(psf, pidlFolder, hKey, dwFlags);
695 return hr;
696
697 m_shellBottom = (dwFlags & SMSET_BOTTOM) != 0;
698
699 if (m_site)
700 {
702
703 hr = m_site->GetWindow(&hwndParent);
705 return hr;
706
709 return hr;
710
712 }
713
714 return hr;
715}
HRESULT SetShellFolder(IShellFolder *psf, LPCITEMIDLIST pidlFolder, HKEY hKey, DWORD dwFlags)
virtual HRESULT FillToolbar(BOOL clearFirst=FALSE)
FxAutoRegKey hKey

◆ SetSite()

HRESULT STDMETHODCALLTYPE CMenuBand::SetSite ( IUnknown pUnkSite)
virtual

Implements IObjectWithSite.

Definition at line 187 of file CMenuBand.cpp.

188{
190 HRESULT hr;
191
192 m_site = NULL;
193
194 if (pUnkSite == NULL)
195 return S_OK;
196
200 return hr;
201
202 hr = m_site->GetWindow(&hwndParent);
204 return hr;
205
207 return E_FAIL;
208
209 if (m_staticToolbar != NULL)
210 {
213 return hr;
214
217 return hr;
218 }
219
220 if (m_SFToolbar != NULL)
221 {
224 return hr;
225
228 return hr;
229 }
230
233 return hr;
234
235 CComPtr<IOleWindow> pTopLevelWindow;
236 hr = IUnknown_QueryService(m_site, SID_STopLevelBrowser, IID_PPV_ARG(IOleWindow, &pTopLevelWindow));
237 if (SUCCEEDED(hr))
238 {
239 hr = pTopLevelWindow->GetWindow(&m_topLevelWindow);
241 return hr;
242 }
243 else
244 {
246 }
247
248 return S_OK;
249}
HRESULT WINAPI IUnknown_QueryService(IUnknown *, REFGUID, REFIID, LPVOID *)
Definition: ordinal.c:1497
#define SUCCEEDED(hr)
Definition: intsafe.h:50
BOOL WINAPI IsWindow(_In_opt_ HWND)

◆ SetSubMenu()

HRESULT STDMETHODCALLTYPE CMenuBand::SetSubMenu ( IMenuPopup pmp,
BOOL  fSet 
)
virtual

Implements IMenuPopup.

Definition at line 596 of file CMenuBand.cpp.

597{
599 return S_OK;
600}

◆ SetTheme()

HRESULT STDMETHODCALLTYPE CMenuBand::SetTheme ( THIS  )
virtual

Definition at line 1215 of file CMenuBand.cpp.

1216{
1218 return S_OK;
1219}

◆ SetToolbar()

HRESULT STDMETHODCALLTYPE CMenuBand::SetToolbar ( THIS  )
virtual

Definition at line 1197 of file CMenuBand.cpp.

1198{
1200 return S_OK;
1201}

◆ ShowDW()

HRESULT STDMETHODCALLTYPE CMenuBand::ShowDW ( BOOL  fShow)
virtual

Implements IDockingWindow.

Definition at line 391 of file CMenuBand.cpp.

392{
393 HRESULT hr = S_OK;
394
395 if (m_Show == fShow)
396 return S_OK;
397
398 m_Show = fShow;
399
400 if (m_staticToolbar != NULL)
401 {
402 hr = m_staticToolbar->ShowDW(fShow);
404 return hr;
405 }
406
407 if (m_SFToolbar != NULL)
408 {
409 hr = m_SFToolbar->ShowDW(fShow);
411 return hr;
412 }
413
414 if (fShow)
415 {
416 hr = _CallCB(SMC_INITMENU, 0, 0);
418 return hr;
419 }
420 else if (m_parentBand)
421 {
422 m_parentBand->SetClient(NULL);
423 }
424
425 if (_IsPopup() == S_OK)
426 {
427 if (fShow)
429 else
431 }
432 else
433 {
434 if (fShow)
436 else
438 }
439
440 return S_OK;
441}
HRESULT _IsPopup()
Definition: CMenuBand.cpp:620
HRESULT PopMenuPopup(CMenuBand *mb)
HRESULT PushMenuPopup(CMenuBand *mb)
HRESULT PopMenuBar(CMenuBand *mb)
HRESULT PushMenuBar(CMenuBand *mb)
HRESULT ShowDW(BOOL fShow)

Referenced by CloseDW().

◆ TranslateAcceleratorIO()

HRESULT STDMETHODCALLTYPE CMenuBand::TranslateAcceleratorIO ( LPMSG  lpMsg)
virtual

Definition at line 1270 of file CMenuBand.cpp.

1271{
1272 // TODO: Alt down -> toggle menu focus
1273 return S_FALSE;
1274}

◆ TranslateMenuMessage()

HRESULT STDMETHODCALLTYPE CMenuBand::TranslateMenuMessage ( MSG pmsg,
LRESULT plRet 
)
virtual

Implements IMenuBand.

Definition at line 670 of file CMenuBand.cpp.

671{
672 if (pmsg->message == WM_ACTIVATE && _IsPopup() == S_FALSE)
673 {
674 if (m_staticToolbar)
675 m_staticToolbar->Invalidate();
676 if (m_SFToolbar)
677 m_SFToolbar->Invalidate();
678 }
679
680 return S_FALSE;
681}
#define WM_ACTIVATE
Definition: winuser.h:1602

◆ UIActivateIO()

HRESULT STDMETHODCALLTYPE CMenuBand::UIActivateIO ( BOOL  fActivate,
LPMSG  lpMsg 
)
virtual

Definition at line 476 of file CMenuBand.cpp.

477{
478 HRESULT hr;
479
480 if (m_subMenuParent)
481 {
482 hr = m_subMenuParent->SetSubMenu(this, fActivate);
484 return hr;
485 }
486
487 if (fActivate)
488 {
489 CComPtr<IOleWindow> pTopLevelWindow;
490 hr = IUnknown_QueryService(m_site, SID_SMenuPopup, IID_PPV_ARG(IOleWindow, &pTopLevelWindow));
492 return hr;
493
494 hr = pTopLevelWindow->GetWindow(&m_topLevelWindow);
496 return hr;
497 }
498 else
499 {
501 }
502
503 return S_FALSE;
504}

◆ UseBigIcons()

BOOL CMenuBand::UseBigIcons ( )
inline

Definition at line 207 of file CMenuBand.h.

208 {
209 return m_useBigIcons;
210 }

Referenced by CMenuToolbarBase::UpdateImageLists().

Member Data Documentation

◆ m_childBand

CComPtr<CMenuBand> CMenuBand::m_childBand
private

Definition at line 51 of file CMenuBand.h.

Referenced by _SetChildBand(), and CloseDW().

◆ m_dwFlags

DWORD CMenuBand::m_dwFlags
private

◆ m_focusManager

CMenuFocusManager* CMenuBand::m_focusManager
private

Definition at line 43 of file CMenuBand.h.

Referenced by _TrackContextMenu(), _TrackSubMenu(), CMenuBand(), ShowDW(), and ~CMenuBand().

◆ m_hmenu

HMENU CMenuBand::m_hmenu
private

Definition at line 58 of file CMenuBand.h.

Referenced by _CallCB(), SetMenu(), and ~CMenuBand().

◆ m_hotBar

CMenuToolbarBase* CMenuBand::m_hotBar
private

Definition at line 64 of file CMenuBand.h.

Referenced by _ChangeHotItem(), _KeyboardItemChange(), and _MenuItemSelect().

◆ m_hotItem

INT CMenuBand::m_hotItem
private

Definition at line 65 of file CMenuBand.h.

Referenced by _ChangeHotItem(), and _MenuItemSelect().

◆ m_menuOwner

HWND CMenuBand::m_menuOwner
private

Definition at line 59 of file CMenuBand.h.

Referenced by _CallCB(), _TrackContextMenu(), _TrackSubMenu(), and SetMenu().

◆ m_parentBand

CComPtr<CMenuBand> CMenuBand::m_parentBand
private

Definition at line 52 of file CMenuBand.h.

Referenced by _MenuItemSelect(), _SetParentBand(), CloseDW(), and ShowDW().

◆ m_popupBar

CMenuToolbarBase* CMenuBand::m_popupBar
private

Definition at line 66 of file CMenuBand.h.

Referenced by _ChangePopupItem(), _HasSubMenu(), _IsTracking(), and HasFocusIO().

◆ m_popupItem

INT CMenuBand::m_popupItem
private

Definition at line 67 of file CMenuBand.h.

Referenced by _ChangePopupItem().

◆ m_psmc

CComPtr<IShellMenuCallback> CMenuBand::m_psmc
private

Definition at line 48 of file CMenuBand.h.

Referenced by _CallCB(), GetMenuInfo(), and Initialize().

◆ m_SFToolbar

◆ m_shellBottom

BOOL CMenuBand::m_shellBottom
private

Definition at line 70 of file CMenuBand.h.

Referenced by OnPosRectChangeDB(), and SetShellFolder().

◆ m_Show

BOOL CMenuBand::m_Show
private

Definition at line 69 of file CMenuBand.h.

Referenced by ShowDW().

◆ m_site

CComPtr<IOleWindow> CMenuBand::m_site
private

◆ m_staticToolbar

◆ m_subMenuChild

CComPtr<IMenuPopup> CMenuBand::m_subMenuChild
private

◆ m_subMenuParent

CComPtr<IMenuPopup> CMenuBand::m_subMenuParent
private

Definition at line 50 of file CMenuBand.h.

Referenced by _MenuItemSelect(), _OnPopupSubMenu(), CloseDW(), OnSelect(), SetSite(), and UIActivateIO().

◆ m_topLevelWindow

HWND CMenuBand::m_topLevelWindow
private

◆ m_trackedHwnd

HWND CMenuBand::m_trackedHwnd
private

Definition at line 73 of file CMenuBand.h.

Referenced by _CancelCurrentPopup(), and _TrackSubMenu().

◆ m_trackedPopup

HMENU CMenuBand::m_trackedPopup
private

Definition at line 72 of file CMenuBand.h.

Referenced by _CancelCurrentPopup(), and _TrackSubMenu().

◆ m_uId

UINT CMenuBand::m_uId
private

Definition at line 54 of file CMenuBand.h.

Referenced by _CallCB(), GetMenuInfo(), and Initialize().

◆ m_uIdAncestor

UINT CMenuBand::m_uIdAncestor
private

Definition at line 55 of file CMenuBand.h.

Referenced by _CallCB(), GetMenuInfo(), and Initialize().

◆ m_useBigIcons

BOOL CMenuBand::m_useBigIcons
private

Definition at line 61 of file CMenuBand.h.

Referenced by Exec(), and UseBigIcons().

◆ m_UserData

PVOID CMenuBand::m_UserData
private

Definition at line 57 of file CMenuBand.h.

Referenced by Initialize().


The documentation for this class was generated from the following files: