ReactOS  0.4.14-dev-376-gaedba84
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 ()
 
- Public Member Functions inherited from IUnknown
HRESULT QueryInterface ([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
 
ULONG AddRef ()
 
ULONG Release ()
 
- Public Member Functions inherited from IServiceProvider
HRESULT RemoteQueryService ([in] REFGUID guidService, [in] REFIID riid, [out, iid_is(riid)] IUnknown **ppvObject)
 

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

◆ ~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 }
HMENU m_hmenu
Definition: CMenuBand.h:58
CMenuStaticToolbar * m_staticToolbar
Definition: CMenuBand.h:44
BOOL WINAPI DestroyMenu(_In_ HMENU)
static void ReleaseManager(CMenuFocusManager *obj)
CMenuSFToolbar * m_SFToolbar
Definition: CMenuBand.h:45
CMenuFocusManager * m_focusManager
Definition: CMenuBand.h:43

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 }
CMenuStaticToolbar * m_staticToolbar
Definition: CMenuBand.h:44
HRESULT BeforeCancelPopup()
#define S_OK
Definition: intsafe.h:59
CMenuSFToolbar * m_SFToolbar
Definition: CMenuBand.h:45

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 }
HWND m_topLevelWindow
Definition: CMenuBand.h:62
HWND m_menuOwner
Definition: CMenuBand.h:59
HMENU m_hmenu
Definition: CMenuBand.h:58
void WINAPI ILFree(LPITEMIDLIST pidl)
Definition: pidl.c:925
LPITEMIDLIST pidlItem
Definition: shobjidl.idl:2624
HRESULT hr
Definition: shlfolder.c:183
UINT uIdParent
Definition: shobjidl.idl:2620
IUnknown * punk
Definition: shobjidl.idl:2622
CComPtr< IShellMenuCallback > m_psmc
Definition: CMenuBand.h:48
#define IID_PPV_ARG(Itype, ppType)
WPARAM wParam
Definition: combotst.c:138
ULONG Release()
#define S_FALSE
Definition: winerror.h:2357
smooth NULL
Definition: ftsmooth.c:416
UINT m_uIdAncestor
Definition: CMenuBand.h:55
IShellFolder * psf
Definition: shobjidl.idl:2625
UINT uIdAncestor
Definition: shobjidl.idl:2621
LONG HRESULT
Definition: typedefs.h:77
UINT m_uId
Definition: CMenuBand.h:54
LPITEMIDLIST pidlFolder
Definition: shobjidl.idl:2623
GLenum GLuint id
Definition: glext.h:5579
CMenuSFToolbar * m_SFToolbar
Definition: CMenuBand.h:45
LPARAM lParam
Definition: combotst.c:139
HMENU hmenu
Definition: shobjidl.idl:2617
HRESULT GetShellFolder(DWORD *pdwFlags, LPITEMIDLIST *ppidl, REFIID riid, void **ppv)

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
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139

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 }
HRESULT _CallCB(UINT uMsg, WPARAM wParam, LPARAM lParam, UINT id=0, LPITEMIDLIST pidl=NULL)
Definition: CMenuBand.cpp:778
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139

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 }
HRESULT hr
Definition: shlfolder.c:183
#define S_FALSE
Definition: winerror.h:2357
LONG HRESULT
Definition: typedefs.h:77
HWND m_trackedHwnd
Definition: CMenuBand.h:73
#define WM_CANCELMODE
Definition: winuser.h:1617
CComPtr< IMenuPopup > m_subMenuChild
Definition: CMenuBand.h:49
HMENU m_trackedPopup
Definition: CMenuBand.h:72
#define S_OK
Definition: intsafe.h:59
#define SendMessage
Definition: winuser.h:5744

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 ChangeHotItem(CMenuToolbarBase *toolbar, INT item, DWORD dwFlags)
CMenuStaticToolbar * m_staticToolbar
Definition: CMenuBand.h:44
HRESULT _KillPopupTimers()
Definition: CMenuBand.cpp:1119
#define S_FALSE
Definition: winerror.h:2357
#define TRACE(s)
Definition: solgame.cpp:4
static const WCHAR tb[]
Definition: suminfo.c:286
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
Definition: wincrypt.h:1175
INT m_hotItem
Definition: CMenuBand.h:65
#define S_OK
Definition: intsafe.h:59
GLenum GLuint id
Definition: glext.h:5579
CMenuSFToolbar * m_SFToolbar
Definition: CMenuBand.h:45
CMenuToolbarBase * m_hotBar
Definition: CMenuBand.h:64
HRESULT _MenuItemSelect(DWORD changeType)
Definition: CMenuBand.cpp:954

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 }
INT m_popupItem
Definition: CMenuBand.h:67
CMenuStaticToolbar * m_staticToolbar
Definition: CMenuBand.h:44
#define TRACE(s)
Definition: solgame.cpp:4
static const WCHAR tb[]
Definition: suminfo.c:286
CMenuToolbarBase * m_popupBar
Definition: CMenuBand.h:66
HRESULT ChangePopupItem(CMenuToolbarBase *toolbar, INT item)
#define S_OK
Definition: intsafe.h:59
GLenum GLuint id
Definition: glext.h:5579
CMenuSFToolbar * m_SFToolbar
Definition: CMenuBand.h:45

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 }
CMenuStaticToolbar * m_staticToolbar
Definition: CMenuBand.h:44
#define S_OK
Definition: intsafe.h:59
HRESULT DisableMouseTrack(BOOL bDisable)
CMenuSFToolbar * m_SFToolbar
Definition: CMenuBand.h:45

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 }
HWND m_topLevelWindow
Definition: CMenuBand.h:62
#define S_OK
Definition: intsafe.h:59

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 }
#define S_FALSE
Definition: winerror.h:2357
CMenuToolbarBase * m_popupBar
Definition: CMenuBand.h:66
#define S_OK
Definition: intsafe.h:59

◆ _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 }
smooth NULL
Definition: ftsmooth.c:416
CMenuToolbarBase * m_popupBar
Definition: CMenuBand.h:66

◆ _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
942  if (tb == m_SFToolbar && m_staticToolbar)
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 }
HRESULT hr
Definition: shlfolder.c:183
CMenuStaticToolbar * m_staticToolbar
Definition: CMenuBand.h:44
#define VK_DOWN
Definition: winuser.h:2202
#define VK_HOME
Definition: winuser.h:2198
#define VK_UP
Definition: winuser.h:2200
#define S_FALSE
Definition: winerror.h:2357
LONG HRESULT
Definition: typedefs.h:77
static const WCHAR tb[]
Definition: suminfo.c:286
CMenuSFToolbar * m_SFToolbar
Definition: CMenuBand.h:45
#define VK_END
Definition: winuser.h:2197
CMenuToolbarBase * m_hotBar
Definition: CMenuBand.h:64

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 hr
Definition: shlfolder.c:183
CMenuStaticToolbar * m_staticToolbar
Definition: CMenuBand.h:44
HRESULT KillPopupTimer()
LONG HRESULT
Definition: typedefs.h:77
#define S_OK
Definition: intsafe.h:59
CMenuSFToolbar * m_SFToolbar
Definition: CMenuBand.h:45

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 {
1136  m_staticToolbar->MenuBarMouseDown(item, isLButton);
1138  m_SFToolbar->MenuBarMouseDown(item, isLButton);
1139  return S_OK;
1140 }
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
CMenuStaticToolbar * m_staticToolbar
Definition: CMenuBand.h:44
#define S_OK
Definition: intsafe.h:59
static ATOM item
Definition: dde.c:856
HRESULT IsWindowOwner(HWND hwnd)
HRESULT MenuBarMouseDown(INT iIndex, BOOL isLButton)
CMenuSFToolbar * m_SFToolbar
Definition: CMenuBand.h:45

◆ _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 }
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
CMenuStaticToolbar * m_staticToolbar
Definition: CMenuBand.h:44
HRESULT MenuBarMouseUp(INT iIndex, BOOL isLButton)
#define S_OK
Definition: intsafe.h:59
static ATOM item
Definition: dde.c:856
HRESULT IsWindowOwner(HWND hwnd)
CMenuSFToolbar * m_SFToolbar
Definition: CMenuBand.h:45

◆ _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 }
#define TRUE
Definition: types.h:120
HRESULT hr
Definition: shlfolder.c:183
HRESULT _KeyboardItemChange(DWORD change)
Definition: CMenuBand.cpp:911
#define VK_LEFT
Definition: winuser.h:2199
#define VK_DOWN
Definition: winuser.h:2202
#define VK_UP
Definition: winuser.h:2200
#define S_FALSE
Definition: winerror.h:2357
HRESULT PopupItem(INT iItem, BOOL keyInitiated)
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
static const WCHAR tb[]
Definition: suminfo.c:286
CComPtr< CMenuBand > m_parentBand
Definition: CMenuBand.h:52
DWORD m_dwFlags
Definition: CMenuBand.h:56
INT m_hotItem
Definition: CMenuBand.h:65
CComPtr< IMenuPopup > m_subMenuParent
Definition: CMenuBand.h:50
CComPtr< IMenuPopup > m_subMenuChild
Definition: CMenuBand.h:49
#define VK_RIGHT
Definition: winuser.h:2201
#define S_OK
Definition: intsafe.h:59
static ATOM item
Definition: dde.c:856
CMenuToolbarBase * m_hotBar
Definition: CMenuBand.h:64

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
1063  if (FAILED_UNEXPECTEDLY(hr))
1064  return hr;
1065 
1067  if (FAILED_UNEXPECTEDLY(hr))
1068  return hr;
1069 
1070  hr = pDeskBar->SetClient(pBandSite);
1071  if (FAILED_UNEXPECTEDLY(hr))
1072  return hr;
1073 
1074  hr = pBandSite->AddBand(childShellMenu);
1075  if (FAILED_UNEXPECTEDLY(hr))
1076  return hr;
1077 
1078  //
1079  CComPtr<IMenuPopup> popup;
1080  hr = pDeskBar->QueryInterface(IID_PPV_ARG(IMenuPopup, &popup));
1081  if (FAILED_UNEXPECTEDLY(hr))
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 hr
Definition: shlfolder.c:183
CComPtr< IOleWindow > m_site
Definition: CMenuBand.h:47
#define CMenuDeskBar_CreateInstance
Definition: shellmenu.h:75
#define IID_PPV_ARG(Itype, ppType)
HRESULT WINAPI IUnknown_SetSite(IUnknown *obj, IUnknown *site)
Definition: ordinal.c:1358
#define CMenuSite_CreateInstance
Definition: shellmenu.h:87
LONG HRESULT
Definition: typedefs.h:77
#define FAILED_UNEXPECTEDLY(hr)
Definition: shellutils.h:71
unsigned long DWORD
Definition: ntddk_ex.h:95
GLbitfield flags
Definition: glext.h:7161
DWORD m_dwFlags
Definition: CMenuBand.h:56
CComPtr< IMenuPopup > m_subMenuParent
Definition: CMenuBand.h:50
CComPtr< IMenuPopup > m_subMenuChild
Definition: CMenuBand.h:49
#define S_OK
Definition: intsafe.h:59

Referenced by CMenuToolbarBase::PopupSubMenu().

◆ _SetChildBand()

HRESULT CMenuBand::_SetChildBand ( CMenuBand child)

Definition at line 603 of file CMenuBand.cpp.

604 {
605  m_childBand = child;
606  if (!child)
607  {
608  _ChangePopupItem(NULL, -1);
609  }
610  return S_OK;
611 }
static HWND child
Definition: cursoricon.c:298
smooth NULL
Definition: ftsmooth.c:416
CComPtr< CMenuBand > m_childBand
Definition: CMenuBand.h:51
HRESULT _ChangePopupItem(CMenuToolbarBase *tb, INT id)
Definition: CMenuBand.cpp:899
#define S_OK
Definition: intsafe.h:59

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:2869
CComPtr< CMenuBand > m_parentBand
Definition: CMenuBand.h:52
#define S_OK
Definition: intsafe.h:59

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);
836  if (FAILED_UNEXPECTEDLY(hr))
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 }
HWND m_topLevelWindow
Definition: CMenuBand.h:62
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
HWND m_menuOwner
Definition: CMenuBand.h:59
HRESULT hr
Definition: shlfolder.c:183
HRESULT PopTrackedPopup(HMENU popup)
#define TPM_RETURNCMD
Definition: winuser.h:2362
BOOL WINAPI TrackPopupMenuEx(_In_ HMENU, _In_ UINT, _In_ int, _In_ int, _In_ HWND, _In_opt_ LPTPMPARAMS)
DWORD WINAPI GetLastError(VOID)
Definition: except.c:1059
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
#define MAKEINTRESOURCEA(i)
Definition: winuser.h:581
HRESULT PushTrackedPopup(HMENU popup)
#define E_FAIL
Definition: ddrawi.h:102
#define S_FALSE
Definition: winerror.h:2357
smooth NULL
Definition: ftsmooth.c:416
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
#define FAILED_UNEXPECTEDLY(hr)
Definition: shellutils.h:71
BOOL WINAPI DestroyMenu(_In_ HMENU)
#define UINT_MAX
Definition: limits.h:41
unsigned int UINT
Definition: ndis.h:50
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
HMENU WINAPI CreatePopupMenu(void)
Definition: menu.c:846
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
Definition: ordinal.c:60
CMenuFocusManager * m_focusManager
Definition: CMenuBand.h:43
HRESULT _MenuItemSelect(DWORD changeType)
Definition: CMenuBand.cpp:954

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 }
HWND m_topLevelWindow
Definition: CMenuBand.h:62
#define TPM_VERTICAL
Definition: winuser.h:2357
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
HWND m_menuOwner
Definition: CMenuBand.h:59
#define TPM_LEFTALIGN
Definition: winuser.h:2352
HRESULT PopTrackedPopup(HMENU popup)
BOOL WINAPI TrackPopupMenuEx(_In_ HMENU, _In_ UINT, _In_ int, _In_ int, _In_ HWND, _In_opt_ LPTPMPARAMS)
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
HRESULT PushTrackedPopup(HMENU popup)
GLenum const GLfloat * params
Definition: glext.h:5645
smooth NULL
Definition: ftsmooth.c:416
struct tagTPMPARAMS TPMPARAMS
HRESULT _DisableMouseTrack(BOOL bDisable)
Definition: CMenuBand.cpp:1110
HWND m_trackedHwnd
Definition: CMenuBand.h:73
GLbitfield flags
Definition: glext.h:7161
HMENU m_trackedPopup
Definition: CMenuBand.h:72
#define S_OK
Definition: intsafe.h:59
unsigned int UINT
Definition: ndis.h:50
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
CMenuFocusManager * m_focusManager
Definition: CMenuBand.h:43

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 }
CComPtr< IOleWindow > m_site
Definition: CMenuBand.h:47
HRESULT WINAPI IUnknown_QueryServiceExec(IUnknown *lpUnknown, REFIID service, const GUID *group, DWORD cmdId, DWORD cmdOpt, VARIANT *pIn, VARIANT *pOut)
Definition: ordinal.c:1500
smooth NULL
Definition: ftsmooth.c:416

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  {
447  m_subMenuChild->OnSelect(MPOS_CANCELLEVEL);
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  {
464  m_SFToolbar->Close();
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 }
CMenuStaticToolbar * m_staticToolbar
Definition: CMenuBand.h:44
CComPtr< IOleWindow > m_site
Definition: CMenuBand.h:47
virtual HRESULT STDMETHODCALLTYPE ShowDW(BOOL fShow)
Definition: CMenuBand.cpp:391
smooth NULL
Definition: ftsmooth.c:416
CComPtr< CMenuBand > m_childBand
Definition: CMenuBand.h:51
#define TRACE(s)
Definition: solgame.cpp:4
CComPtr< CMenuBand > m_parentBand
Definition: CMenuBand.h:52
CComPtr< IMenuPopup > m_subMenuParent
Definition: CMenuBand.h:50
CComPtr< IMenuPopup > m_subMenuChild
Definition: CMenuBand.h:49
#define S_OK
Definition: intsafe.h:59
void Release()
Definition: atlcomcli.h:140
CMenuSFToolbar * m_SFToolbar
Definition: CMenuBand.h:45

◆ ContextSensitiveHelp()

HRESULT STDMETHODCALLTYPE CMenuBand::ContextSensitiveHelp ( BOOL  fEnterMode)
virtual

Implements IOleWindow.

Definition at line 1185 of file CMenuBand.cpp.

1186 {
1187  UNIMPLEMENTED;
1188  return S_OK;
1189 }
#define S_OK
Definition: intsafe.h:59
#define UNIMPLEMENTED
Definition: CMenuBand.cpp:33

◆ DoDefaultAction()

HRESULT STDMETHODCALLTYPE CMenuBand::DoDefaultAction ( THIS  )
virtual

Definition at line 1251 of file CMenuBand.cpp.

1252 {
1253  UNIMPLEMENTED;
1254  return S_OK;
1255 }
#define S_OK
Definition: intsafe.h:59
#define UNIMPLEMENTED
Definition: CMenuBand.cpp:33

◆ 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 }
HRESULT _KeyboardItemChange(DWORD change)
Definition: CMenuBand.cpp:911
#define E_FAIL
Definition: ddrawi.h:102
#define VK_HOME
Definition: winuser.h:2198
#define S_FALSE
Definition: winerror.h:2357
BOOL m_useBigIcons
Definition: CMenuBand.h:61
#define S_OK
Definition: intsafe.h:59
#define UNIMPLEMENTED
Definition: CMenuBand.cpp:33
BOOL WINAPI IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
Definition: compobj.c:4112
#define VK_END
Definition: winuser.h:2197

◆ 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);
358  if (FAILED_UNEXPECTEDLY(hr))
359  return hr;
360 
361  if (m_SFToolbar != NULL)
362  hr = m_SFToolbar->GetSizes(&minShlFld, &maxShlFld, &intShlFld);
363  if (FAILED_UNEXPECTEDLY(hr))
364  return hr;
365 
366  if (m_staticToolbar == NULL && m_SFToolbar == NULL)
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 }
#define max(a, b)
Definition: svc.c:63
HRESULT hr
Definition: shlfolder.c:183
CMenuStaticToolbar * m_staticToolbar
Definition: CMenuBand.h:44
#define E_FAIL
Definition: ddrawi.h:102
smooth NULL
Definition: ftsmooth.c:416
LONG cx
Definition: windef.h:319
LONG HRESULT
Definition: typedefs.h:77
#define FAILED_UNEXPECTEDLY(hr)
Definition: shellutils.h:71
DWORD m_dwFlags
Definition: CMenuBand.h:56
#define S_OK
Definition: intsafe.h:59
CMenuSFToolbar * m_SFToolbar
Definition: CMenuBand.h:45
LONG cy
Definition: windef.h:320
HRESULT GetSizes(SIZE *pMinSize, SIZE *pMaxSize, SIZE *pIntegralSize)

◆ GetBottom()

HRESULT STDMETHODCALLTYPE CMenuBand::GetBottom ( THIS  )
virtual

Definition at line 1227 of file CMenuBand.cpp.

1228 {
1229  UNIMPLEMENTED;
1230  return S_OK;
1231 }
#define S_OK
Definition: intsafe.h:59
#define UNIMPLEMENTED
Definition: CMenuBand.cpp:33

◆ GetClassID()

HRESULT STDMETHODCALLTYPE CMenuBand::GetClassID ( CLSID pClassID)
virtual

Implements IPersist.

Definition at line 1300 of file CMenuBand.cpp.

1301 {
1302  UNIMPLEMENTED;
1303  return S_OK;
1304 }
#define S_OK
Definition: intsafe.h:59
#define UNIMPLEMENTED
Definition: CMenuBand.cpp:33

◆ 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  m_subMenuChild->AddRef();
659  *ppunkClient = m_subMenuChild;
660  }
661 
662  return S_OK;
663 }
smooth NULL
Definition: ftsmooth.c:416
CComPtr< IMenuPopup > m_subMenuChild
Definition: CMenuBand.h:49
#define S_OK
Definition: intsafe.h:59
#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 }
CMenuStaticToolbar * m_staticToolbar
Definition: CMenuBand.h:44
#define E_FAIL
Definition: ddrawi.h:102
smooth NULL
Definition: ftsmooth.c:416
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  if (m_psmc)
103  m_psmc->AddRef();
104  *ppsmc = m_psmc;
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 }
CComPtr< IShellMenuCallback > m_psmc
Definition: CMenuBand.h:48
#define E_INVALIDARG
Definition: ddrawi.h:101
UINT m_uIdAncestor
Definition: CMenuBand.h:55
DWORD m_dwFlags
Definition: CMenuBand.h:56
UINT m_uId
Definition: CMenuBand.h:54
#define S_OK
Definition: intsafe.h:59

Referenced by CMenuSFToolbar::InternalPopupItem().

◆ GetParentSite()

HRESULT STDMETHODCALLTYPE CMenuBand::GetParentSite ( THIS  )
virtual

Definition at line 1239 of file CMenuBand.cpp.

1240 {
1241  UNIMPLEMENTED;
1242  return S_OK;
1243 }
#define S_OK
Definition: intsafe.h:59
#define UNIMPLEMENTED
Definition: CMenuBand.cpp:33

◆ 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: precomp.h:44
REFIID LPVOID * ppv
Definition: atlbase.h:39
#define E_FAIL
Definition: ddrawi.h:102
CMenuSFToolbar * m_SFToolbar
Definition: CMenuBand.h:45
HRESULT GetShellFolder(DWORD *pdwFlags, LPITEMIDLIST *ppidl, REFIID riid, void **ppv)

◆ 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 }
REFIID riid
Definition: precomp.h:44
CComPtr< IOleWindow > m_site
Definition: CMenuBand.h:47
#define E_FAIL
Definition: ddrawi.h:102
smooth NULL
Definition: ftsmooth.c:416

Referenced by CMenuFocusManager::UpdateFocus().

◆ GetSizeMax()

HRESULT STDMETHODCALLTYPE CMenuBand::GetSizeMax ( ULARGE_INTEGER pcbSize)
virtual

Implements IPersistStream.

Definition at line 1294 of file CMenuBand.cpp.

1295 {
1296  UNIMPLEMENTED;
1297  return S_OK;
1298 }
#define S_OK
Definition: intsafe.h:59
#define UNIMPLEMENTED
Definition: CMenuBand.cpp:33

◆ GetState() [1/2]

HRESULT STDMETHODCALLTYPE CMenuBand::GetState ( LPSMDATA  psmd)
virtual

Definition at line 1167 of file CMenuBand.cpp.

1168 {
1169  UNIMPLEMENTED;
1170  return S_OK;
1171 }
#define S_OK
Definition: intsafe.h:59
#define UNIMPLEMENTED
Definition: CMenuBand.cpp:33

◆ GetState() [2/2]

HRESULT STDMETHODCALLTYPE CMenuBand::GetState ( THIS  )
virtual

Definition at line 1245 of file CMenuBand.cpp.

1246 {
1247  UNIMPLEMENTED;
1248  return S_OK;
1249 }
#define S_OK
Definition: intsafe.h:59
#define UNIMPLEMENTED
Definition: CMenuBand.cpp:33

◆ GetSubMenu()

HRESULT STDMETHODCALLTYPE CMenuBand::GetSubMenu ( THIS  )
virtual

Definition at line 1191 of file CMenuBand.cpp.

1192 {
1193  UNIMPLEMENTED;
1194  return S_OK;
1195 }
#define S_OK
Definition: intsafe.h:59
#define UNIMPLEMENTED
Definition: CMenuBand.cpp:33

◆ GetTop()

HRESULT STDMETHODCALLTYPE CMenuBand::GetTop ( THIS  )
virtual

Definition at line 1221 of file CMenuBand.cpp.

1222 {
1223  UNIMPLEMENTED;
1224  return S_OK;
1225 }
#define S_OK
Definition: intsafe.h:59
#define UNIMPLEMENTED
Definition: CMenuBand.cpp:33

◆ GetTracked()

HRESULT STDMETHODCALLTYPE CMenuBand::GetTracked ( THIS  )
virtual

Definition at line 1233 of file CMenuBand.cpp.

1234 {
1235  UNIMPLEMENTED;
1236  return S_OK;
1237 }
#define S_OK
Definition: intsafe.h:59
#define UNIMPLEMENTED
Definition: CMenuBand.cpp:33

◆ 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 }
CMenuStaticToolbar * m_staticToolbar
Definition: CMenuBand.h:44
#define E_FAIL
Definition: ddrawi.h:102
smooth NULL
Definition: ftsmooth.c:416
CMenuSFToolbar * m_SFToolbar
Definition: CMenuBand.h:45
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 }
#define S_FALSE
Definition: winerror.h:2357
CMenuToolbarBase * m_popupBar
Definition: CMenuBand.h:66
#define S_OK
Definition: intsafe.h:59

◆ 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 }
HRESULT _CallCB(UINT uMsg, WPARAM wParam, LPARAM lParam, UINT id=0, LPITEMIDLIST pidl=NULL)
Definition: CMenuBand.cpp:778
CComPtr< IShellMenuCallback > m_psmc
Definition: CMenuBand.h:48
PVOID m_UserData
Definition: CMenuBand.h:57
UINT m_uIdAncestor
Definition: CMenuBand.h:55
DWORD m_dwFlags
Definition: CMenuBand.h:56
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
Definition: wincrypt.h:1175
UINT m_uId
Definition: CMenuBand.h:54
#define S_OK
Definition: intsafe.h:59

◆ InvalidateItem()

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

Definition at line 1161 of file CMenuBand.cpp.

1162 {
1163  UNIMPLEMENTED;
1164  return S_OK;
1165 }
#define S_OK
Definition: intsafe.h:59
#define UNIMPLEMENTED
Definition: CMenuBand.cpp:33

◆ IsDirty()

HRESULT STDMETHODCALLTYPE CMenuBand::IsDirty ( void  )
virtual

Implements IPersistStream.

Definition at line 1276 of file CMenuBand.cpp.

1277 {
1278  UNIMPLEMENTED;
1279  return S_OK;
1280 }
#define S_OK
Definition: intsafe.h:59
#define UNIMPLEMENTED
Definition: CMenuBand.cpp:33

◆ IsEmpty()

HRESULT STDMETHODCALLTYPE CMenuBand::IsEmpty ( THIS  )
virtual

Definition at line 1257 of file CMenuBand.cpp.

1258 {
1259  UNIMPLEMENTED;
1260  return S_OK;
1261 }
#define S_OK
Definition: intsafe.h:59
#define UNIMPLEMENTED
Definition: CMenuBand.cpp:33

◆ IsMenuMessage()

HRESULT STDMETHODCALLTYPE CMenuBand::IsMenuMessage ( MSG pmsg)
virtual

Implements IMenuBand.

Definition at line 665 of file CMenuBand.cpp.

666 {
667  return S_FALSE;
668 }
#define S_FALSE
Definition: winerror.h:2357

◆ 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 }
CMenuStaticToolbar * m_staticToolbar
Definition: CMenuBand.h:44
HWND hWnd
Definition: settings.c:17
#define S_FALSE
Definition: winerror.h:2357
#define S_OK
Definition: intsafe.h:59
HRESULT IsWindowOwner(HWND hwnd)
CMenuSFToolbar * m_SFToolbar
Definition: CMenuBand.h:45

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 {
1284  UNIMPLEMENTED;
1285  return S_OK;
1286 }
#define S_OK
Definition: intsafe.h:59
#define UNIMPLEMENTED
Definition: CMenuBand.cpp:33

◆ 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);
280  if (FAILED_UNEXPECTEDLY(hr))
281  return hr;
282 
283  if (m_SFToolbar != NULL)
284  hr = m_SFToolbar->GetSizes(NULL, &maxShlFld, NULL);
285  if (FAILED_UNEXPECTEDLY(hr))
286  return hr;
287 
288  if (m_staticToolbar == NULL && m_SFToolbar == NULL)
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 hr
Definition: shlfolder.c:183
CMenuStaticToolbar * m_staticToolbar
Definition: CMenuBand.h:44
BOOL m_shellBottom
Definition: CMenuBand.h:70
LONG top
Definition: windef.h:292
LONG left
Definition: windef.h:291
LONG right
Definition: windef.h:293
#define E_FAIL
Definition: ddrawi.h:102
smooth NULL
Definition: ftsmooth.c:416
LONG HRESULT
Definition: typedefs.h:77
#define FAILED_UNEXPECTEDLY(hr)
Definition: shellutils.h:71
#define S_OK
Definition: intsafe.h:59
#define min(a, b)
Definition: monoChain.cc:55
HRESULT SetPosSize(int x, int y, int cx, int cy)
LONG bottom
Definition: windef.h:294
_Out_ LPRECT prc
Definition: ntgdi.h:1658
CMenuSFToolbar * m_SFToolbar
Definition: CMenuBand.h:45
LONG cy
Definition: windef.h:320
HRESULT GetSizes(SIZE *pMinSize, SIZE *pMaxSize, SIZE *pIntegralSize)

◆ 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  {
566  case MPOS_CHILDTRACKING:
567  if (!m_subMenuParent)
568  break;
569  // TODO: Cancel timers?
570  return m_subMenuParent->OnSelect(dwSelectType);
571  case MPOS_SELECTLEFT:
572  if (m_subMenuChild)
573  m_subMenuChild->OnSelect(MPOS_CANCELLEVEL);
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 }
#define S_FALSE
Definition: winerror.h:2357
CComPtr< IMenuPopup > m_subMenuParent
Definition: CMenuBand.h:50
CComPtr< IMenuPopup > m_subMenuChild
Definition: CMenuBand.h:49

◆ 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 }
CMenuStaticToolbar * m_staticToolbar
Definition: CMenuBand.h:44
HWND hWnd
Definition: settings.c:17
#define SystemParametersInfo
Definition: winuser.h:5759
WPARAM wParam
Definition: combotst.c:138
unsigned int BOOL
Definition: ntddk_ex.h:94
#define S_FALSE
Definition: winerror.h:2357
#define WM_WININICHANGE
Definition: winuser.h:1612
HRESULT OnWinEvent(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult)
HRESULT AdjustForTheme(BOOL bFlatStyle)
Definition: CMenuBand.cpp:1156
#define S_OK
Definition: intsafe.h:59
HRESULT IsWindowOwner(HWND hwnd)
CMenuSFToolbar * m_SFToolbar
Definition: CMenuBand.h:45
LPARAM lParam
Definition: combotst.c:139

◆ 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 }
#define S_OK
Definition: intsafe.h:59
#define UNIMPLEMENTED
Definition: CMenuBand.cpp:33

◆ 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 E_NOINTERFACE
Definition: winerror.h:2364
REFIID riid
Definition: precomp.h:44
#define WARN(fmt,...)
Definition: debug.h:111
const char * wine_dbgstr_guid(const GUID *guid)
REFIID LPVOID * ppvObject
Definition: precomp.h:44
HRESULT QueryInterface([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
#define IsEqualIID(riid1, riid2)
Definition: guiddef.h:95

◆ 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 {
1308  UNIMPLEMENTED;
1309  return S_OK;
1310 }
#define S_OK
Definition: intsafe.h:59
#define UNIMPLEMENTED
Definition: CMenuBand.cpp:33

◆ ResizeBorderDW()

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

Implements IDockingWindow.

Definition at line 1179 of file CMenuBand.cpp.

1180 {
1181  UNIMPLEMENTED;
1182  return S_OK;
1183 }
#define S_OK
Definition: intsafe.h:59
#define UNIMPLEMENTED
Definition: CMenuBand.cpp:33

◆ Save()

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

Implements IPersistStream.

Definition at line 1288 of file CMenuBand.cpp.

1289 {
1290  UNIMPLEMENTED;
1291  return S_OK;
1292 }
#define S_OK
Definition: intsafe.h:59
#define UNIMPLEMENTED
Definition: CMenuBand.cpp:33

◆ 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 
647  return punkClient->QueryInterface(IID_PPV_ARG(IMenuPopup, &m_subMenuChild));
648 }
#define IID_PPV_ARG(Itype, ppType)
static HWND child
Definition: cursoricon.c:298
HRESULT WINAPI IUnknown_SetSite(IUnknown *obj, IUnknown *site)
Definition: ordinal.c:1358
smooth NULL
Definition: ftsmooth.c:416
nsrefcnt Release()
CComPtr< IMenuPopup > m_subMenuChild
Definition: CMenuBand.h:49
#define S_OK
Definition: intsafe.h:59
HRESULT QueryInterface([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)

◆ 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;
136  m_menuOwner = hwnd;
137 
138  if (m_hmenu && m_staticToolbar == NULL)
139  {
141  created = true;
142  }
143 
144  if (m_staticToolbar)
145  {
147  if (FAILED_UNEXPECTEDLY(hr))
148  return hr;
149  }
150 
151  if (m_site)
152  {
154 
155  hr = m_site->GetWindow(&hwndParent);
156  if (FAILED_UNEXPECTEDLY(hr))
157  return hr;
158 
159  if (created)
160  {
162  if (FAILED_UNEXPECTEDLY(hr))
163  return hr;
164 
166  }
167  else
168  {
170  }
171  }
172 
173  return hr;
174 }
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
#define TRUE
Definition: types.h:120
HWND m_menuOwner
Definition: CMenuBand.h:59
HMENU m_hmenu
Definition: CMenuBand.h:58
HRESULT hr
Definition: shlfolder.c:183
static HMENU hmenu
Definition: win.c:66
virtual HRESULT FillToolbar(BOOL clearFirst=FALSE)
CMenuStaticToolbar * m_staticToolbar
Definition: CMenuBand.h:44
CComPtr< IOleWindow > m_site
Definition: CMenuBand.h:47
HRESULT CreateToolbar(HWND hwndParent, DWORD dwFlags)
unsigned int BOOL
Definition: ntddk_ex.h:94
smooth NULL
Definition: ftsmooth.c:416
static HWND hwndParent
Definition: cryptui.c:300
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
#define FAILED_UNEXPECTEDLY(hr)
Definition: shellutils.h:71
HRESULT SetMenu(HMENU hmenu, HWND hwnd, DWORD dwFlags)
DWORD m_dwFlags
Definition: CMenuBand.h:56
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
Definition: wincrypt.h:1175
BOOL WINAPI DestroyMenu(_In_ HMENU)

◆ SetMenuToolbar()

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

Definition at line 1173 of file CMenuBand.cpp.

1174 {
1175  UNIMPLEMENTED;
1176  return S_OK;
1177 }
#define S_OK
Definition: intsafe.h:59
#define UNIMPLEMENTED
Definition: CMenuBand.cpp:33

◆ SetMinWidth()

HRESULT STDMETHODCALLTYPE CMenuBand::SetMinWidth ( THIS  )
virtual

Definition at line 1203 of file CMenuBand.cpp.

1204 {
1205  UNIMPLEMENTED;
1206  return S_OK;
1207 }
#define S_OK
Definition: intsafe.h:59
#define UNIMPLEMENTED
Definition: CMenuBand.cpp:33

◆ SetNoBorder()

HRESULT STDMETHODCALLTYPE CMenuBand::SetNoBorder ( THIS  )
virtual

Definition at line 1209 of file CMenuBand.cpp.

1210 {
1211  UNIMPLEMENTED;
1212  return S_OK;
1213 }
#define S_OK
Definition: intsafe.h:59
#define UNIMPLEMENTED
Definition: CMenuBand.cpp:33

◆ 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);
694  if (FAILED_UNEXPECTEDLY(hr))
695  return hr;
696 
697  m_shellBottom = (dwFlags & SMSET_BOTTOM) != 0;
698 
699  if (m_site)
700  {
702 
703  hr = m_site->GetWindow(&hwndParent);
704  if (FAILED_UNEXPECTEDLY(hr))
705  return hr;
706 
708  if (FAILED_UNEXPECTEDLY(hr))
709  return hr;
710 
712  }
713 
714  return hr;
715 }
HRESULT hr
Definition: shlfolder.c:183
BOOL m_shellBottom
Definition: CMenuBand.h:70
CComPtr< IOleWindow > m_site
Definition: CMenuBand.h:47
HRESULT CreateToolbar(HWND hwndParent, DWORD dwFlags)
#define E_INVALIDARG
Definition: ddrawi.h:101
smooth NULL
Definition: ftsmooth.c:416
static HWND hwndParent
Definition: cryptui.c:300
LONG HRESULT
Definition: typedefs.h:77
#define FAILED_UNEXPECTEDLY(hr)
Definition: shellutils.h:71
DWORD m_dwFlags
Definition: CMenuBand.h:56
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
Definition: wincrypt.h:1175
HRESULT SetShellFolder(IShellFolder *psf, LPCITEMIDLIST pidlFolder, HKEY hKey, DWORD dwFlags)
virtual HRESULT FillToolbar(BOOL clearFirst=FALSE)
CMenuSFToolbar * m_SFToolbar
Definition: CMenuBand.h:45

◆ 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 
197  hwndParent = NULL;
199  if (FAILED_UNEXPECTEDLY(hr))
200  return hr;
201 
202  hr = m_site->GetWindow(&hwndParent);
203  if (FAILED_UNEXPECTEDLY(hr))
204  return hr;
205 
206  if (!::IsWindow(hwndParent))
207  return E_FAIL;
208 
209  if (m_staticToolbar != NULL)
210  {
212  if (FAILED_UNEXPECTEDLY(hr))
213  return hr;
214 
216  if (FAILED_UNEXPECTEDLY(hr))
217  return hr;
218  }
219 
220  if (m_SFToolbar != NULL)
221  {
223  if (FAILED_UNEXPECTEDLY(hr))
224  return hr;
225 
227  if (FAILED_UNEXPECTEDLY(hr))
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);
240  if (FAILED_UNEXPECTEDLY(hr))
241  return hr;
242  }
243  else
244  {
246  }
247 
248  return S_OK;
249 }
HWND m_topLevelWindow
Definition: CMenuBand.h:62
#define E_NOINTERFACE
Definition: winerror.h:2364
HRESULT hr
Definition: shlfolder.c:183
BOOL WINAPI IsWindow(_In_opt_ HWND)
virtual HRESULT FillToolbar(BOOL clearFirst=FALSE)
CMenuStaticToolbar * m_staticToolbar
Definition: CMenuBand.h:44
CComPtr< IOleWindow > m_site
Definition: CMenuBand.h:47
HRESULT CreateToolbar(HWND hwndParent, DWORD dwFlags)
#define IID_PPV_ARG(Itype, ppType)
#define E_FAIL
Definition: ddrawi.h:102
HRESULT WINAPI IUnknown_QueryService(IUnknown *, REFGUID, REFIID, LPVOID *)
Definition: ordinal.c:1448
smooth NULL
Definition: ftsmooth.c:416
static HWND hwndParent
Definition: cryptui.c:300
LONG HRESULT
Definition: typedefs.h:77
#define FAILED_UNEXPECTEDLY(hr)
Definition: shellutils.h:71
DWORD m_dwFlags
Definition: CMenuBand.h:56
CComPtr< IMenuPopup > m_subMenuParent
Definition: CMenuBand.h:50
#define S_OK
Definition: intsafe.h:59
HRESULT QueryInterface([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
virtual HRESULT FillToolbar(BOOL clearFirst=FALSE)
CMenuSFToolbar * m_SFToolbar
Definition: CMenuBand.h:45
#define SUCCEEDED(hr)
Definition: intsafe.h:57

◆ 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 }
#define S_OK
Definition: intsafe.h:59
#define UNIMPLEMENTED
Definition: CMenuBand.cpp:33

◆ SetTheme()

HRESULT STDMETHODCALLTYPE CMenuBand::SetTheme ( THIS  )
virtual

Definition at line 1215 of file CMenuBand.cpp.

1216 {
1217  UNIMPLEMENTED;
1218  return S_OK;
1219 }
#define S_OK
Definition: intsafe.h:59
#define UNIMPLEMENTED
Definition: CMenuBand.cpp:33

◆ SetToolbar()

HRESULT STDMETHODCALLTYPE CMenuBand::SetToolbar ( THIS  )
virtual

Definition at line 1197 of file CMenuBand.cpp.

1198 {
1199  UNIMPLEMENTED;
1200  return S_OK;
1201 }
#define S_OK
Definition: intsafe.h:59
#define UNIMPLEMENTED
Definition: CMenuBand.cpp:33

◆ 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);
403  if (FAILED_UNEXPECTEDLY(hr))
404  return hr;
405  }
406 
407  if (m_SFToolbar != NULL)
408  {
409  hr = m_SFToolbar->ShowDW(fShow);
410  if (FAILED_UNEXPECTEDLY(hr))
411  return hr;
412  }
413 
414  if (fShow)
415  {
416  hr = _CallCB(SMC_INITMENU, 0, 0);
417  if (FAILED_UNEXPECTEDLY(hr))
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
430  hr = m_focusManager->PopMenuPopup(this);
431  }
432  else
433  {
434  if (fShow)
435  hr = m_focusManager->PushMenuBar(this);
436  else
437  hr = m_focusManager->PopMenuBar(this);
438  }
439 
440  return S_OK;
441 }
HRESULT _CallCB(UINT uMsg, WPARAM wParam, LPARAM lParam, UINT id=0, LPITEMIDLIST pidl=NULL)
Definition: CMenuBand.cpp:778
HRESULT hr
Definition: shlfolder.c:183
CMenuStaticToolbar * m_staticToolbar
Definition: CMenuBand.h:44
HRESULT PopMenuBar(CMenuBand *mb)
HRESULT PushMenuBar(CMenuBand *mb)
HRESULT PopMenuPopup(CMenuBand *mb)
smooth NULL
Definition: ftsmooth.c:416
HRESULT ShowDW(BOOL fShow)
LONG HRESULT
Definition: typedefs.h:77
#define FAILED_UNEXPECTEDLY(hr)
Definition: shellutils.h:71
BOOL m_Show
Definition: CMenuBand.h:69
CComPtr< CMenuBand > m_parentBand
Definition: CMenuBand.h:52
HRESULT _IsPopup()
Definition: CMenuBand.cpp:620
#define S_OK
Definition: intsafe.h:59
HRESULT PushMenuPopup(CMenuBand *mb)
CMenuSFToolbar * m_SFToolbar
Definition: CMenuBand.h:45
CMenuFocusManager * m_focusManager
Definition: CMenuBand.h:43

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 }
#define S_FALSE
Definition: winerror.h:2357

◆ 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 }
CMenuStaticToolbar * m_staticToolbar
Definition: CMenuBand.h:44
#define S_FALSE
Definition: winerror.h:2357
HRESULT _IsPopup()
Definition: CMenuBand.cpp:620
#define WM_ACTIVATE
Definition: winuser.h:1594
CMenuSFToolbar * m_SFToolbar
Definition: CMenuBand.h:45

◆ 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);
483  if (FAILED_UNEXPECTEDLY(hr))
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));
491  if (FAILED_UNEXPECTEDLY(hr))
492  return hr;
493 
494  hr = pTopLevelWindow->GetWindow(&m_topLevelWindow);
495  if (FAILED_UNEXPECTEDLY(hr))
496  return hr;
497  }
498  else
499  {
501  }
502 
503  return S_FALSE;
504 }
HWND m_topLevelWindow
Definition: CMenuBand.h:62
HRESULT hr
Definition: shlfolder.c:183
CComPtr< IOleWindow > m_site
Definition: CMenuBand.h:47
#define IID_PPV_ARG(Itype, ppType)
HRESULT WINAPI IUnknown_QueryService(IUnknown *, REFGUID, REFIID, LPVOID *)
Definition: ordinal.c:1448
#define S_FALSE
Definition: winerror.h:2357
smooth NULL
Definition: ftsmooth.c:416
LONG HRESULT
Definition: typedefs.h:77
#define FAILED_UNEXPECTEDLY(hr)
Definition: shellutils.h:71
CComPtr< IMenuPopup > m_subMenuParent
Definition: CMenuBand.h:50

◆ UseBigIcons()

BOOL CMenuBand::UseBigIcons ( )
inline

Definition at line 207 of file CMenuBand.h.

208  {
209  return m_useBigIcons;
210  }
BOOL m_useBigIcons
Definition: CMenuBand.h:61

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: