ReactOS 0.4.17-dev-1190-g4c812f4
CMenuStaticToolbar Class Reference

#include <CMenuToolbars.h>

Inheritance diagram for CMenuStaticToolbar:
Collaboration diagram for CMenuStaticToolbar:

Public Member Functions

 CMenuStaticToolbar (CMenuBand *menuBand)
 
virtual ~CMenuStaticToolbar ()
 
HRESULT SetMenu (HMENU hmenu, HWND hwnd, DWORD dwFlags)
 
HRESULT GetMenu (HMENU *phmenu, HWND *phwnd, DWORD *pdwFlags)
 
virtual HRESULT FillToolbar (BOOL clearFirst=FALSE) override
 
- Public Member Functions inherited from CMenuToolbarBase
 CMenuToolbarBase (CMenuBand *menuBand, BOOL usePager)
 
virtual ~CMenuToolbarBase ()
 
HRESULT IsWindowOwner (HWND hwnd)
 
HRESULT CreateToolbar (HWND hwndParent, DWORD dwFlags)
 
HRESULT GetWindow (HWND *phwnd)
 
HRESULT ShowDW (BOOL fShow)
 
HRESULT Close ()
 
HRESULT OnWinEvent (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult)
 
HRESULT ChangeHotItem (CMenuToolbarBase *toolbar, INT item, DWORD dwFlags)
 
HRESULT ChangePopupItem (CMenuToolbarBase *toolbar, INT item)
 
HRESULT PopupSubMenu (UINT itemId, UINT index, IShellMenu *childShellMenu, BOOL keyInitiated)
 
HRESULT PopupSubMenu (UINT itemId, UINT index, HMENU menu)
 
HRESULT TrackContextMenu (IContextMenu *contextMenu, POINT pt)
 
HRESULT KeyboardItemChange (DWORD changeType)
 
HRESULT PrepareExecuteItem (INT iItem)
 
HRESULT ExecuteItem ()
 
HRESULT GetSizes (SIZE *pMinSize, SIZE *pMaxSize, SIZE *pIntegralSize)
 
HRESULT SetPosSize (int x, int y, int cx, int cy)
 
void InvalidateDraw ()
 
HRESULT DisableMouseTrack (BOOL bDisable)
 
virtual HRESULT FillToolbar (BOOL clearFirst=FALSE)=0
 
HRESULT CancelCurrentPopup ()
 
HRESULT PopupItem (INT iItem, BOOL keyInitiated)
 
HRESULT GetDataFromId (INT iItem, INT *pIndex, DWORD_PTR *pData)
 
HRESULT KillPopupTimer ()
 
HRESULT MenuBarMouseDown (INT iIndex, BOOL isLButton)
 
HRESULT MenuBarMouseUp (INT iIndex, BOOL isLButton)
 
HRESULT ProcessClick (INT iItem)
 
HRESULT ProcessContextMenu (INT iItem)
 
HRESULT BeforeCancelPopup ()
 

Protected Member Functions

virtual HRESULT OnDeletingButton (const NMTOOLBAR *tb) override
 
virtual HRESULT InternalGetTooltip (INT iItem, INT index, DWORD_PTR dwData, LPWSTR pszText, INT cchTextMax) override
 
virtual HRESULT InternalExecuteItem (INT iItem, INT index, DWORD_PTR dwData) override
 
virtual HRESULT InternalPopupItem (INT iItem, INT index, DWORD_PTR dwData, BOOL keyInitiated) override
 
virtual HRESULT InternalHasSubMenu (INT iItem, INT index, DWORD_PTR dwData) override
 
virtual HRESULT InternalContextMenu (INT iItem, INT index, DWORD_PTR dwData, POINT pt) override
 
- Protected Member Functions inherited from CMenuToolbarBase
virtual HRESULT OnDeletingButton (const NMTOOLBAR *tb) PURE
 
virtual HRESULT InternalGetTooltip (INT iItem, INT index, DWORD_PTR dwData, LPWSTR pszText, INT cchTextMax) PURE
 
virtual HRESULT InternalExecuteItem (INT iItem, INT index, DWORD_PTR dwData) PURE
 
virtual HRESULT InternalPopupItem (INT iItem, INT index, DWORD_PTR dwData, BOOL keyInitiated) PURE
 
virtual HRESULT InternalHasSubMenu (INT iItem, INT index, DWORD_PTR dwData) PURE
 
virtual HRESULT InternalContextMenu (INT iItem, INT index, DWORD_PTR dwData, POINT pt) PURE
 
HRESULT AddButton (DWORD commandId, LPCWSTR caption, BOOL hasSubMenu, INT iconId, DWORD_PTR buttonData, BOOL last)
 
HRESULT AddSeparator (BOOL last)
 
HRESULT AddPlaceholder ()
 
HRESULT ClearToolbar ()
 
HWND GetToolbar ()
 

Private Attributes

HMENU m_hmenu
 
HWND m_hwndMenu
 

Additional Inherited Members

- Protected Attributes inherited from CMenuToolbarBase
CMenuBand * m_menuBand
 
DWORD m_dwMenuFlags
 
BOOL m_hasSizes
 
SIZE m_idealSize
 
SIZE m_itemSize
 
BOOL m_usePager
 
CMenuToolbarBase * m_hotBar
 
INT m_hotItem
 
CMenuToolbarBase * m_popupBar
 
INT m_popupItem
 
DWORD m_initFlags
 
BOOL m_isTrackingPopup
 
INT m_executeIndex
 
INT m_executeItem
 
DWORD_PTR m_executeData
 
BOOL m_cancelingPopup
 

Detailed Description

Definition at line 141 of file CMenuToolbars.h.

Constructor & Destructor Documentation

◆ CMenuStaticToolbar()

CMenuStaticToolbar::CMenuStaticToolbar ( CMenuBand *  menuBand)

Definition at line 1162 of file CMenuToolbars.cpp.

1162 :
1163 CMenuToolbarBase(menuBand, FALSE),
1164 m_hmenu(NULL),
1166{
1167}
#define NULL
Definition: types.h:112
#define FALSE
Definition: types.h:117

◆ ~CMenuStaticToolbar()

CMenuStaticToolbar::~CMenuStaticToolbar ( )
virtual

Definition at line 1169 of file CMenuToolbars.cpp.

1170{
1171}

Member Function Documentation

◆ FillToolbar()

HRESULT CMenuStaticToolbar::FillToolbar ( BOOL  clearFirst = FALSE)
overridevirtual

Implements CMenuToolbarBase.

Definition at line 1203 of file CMenuToolbars.cpp.

1204{
1205 int i;
1206 int ic = GetMenuItemCount(m_hmenu);
1207
1208 if (clearFirst)
1209 {
1210 ClearToolbar();
1211 }
1212
1213 int count = 0;
1214 for (i = 0; i < ic; i++)
1215 {
1216 BOOL last = i + 1 == ic;
1217
1219
1220 info.cbSize = sizeof(info);
1221 info.dwTypeData = NULL;
1222 info.fMask = MIIM_FTYPE | MIIM_STRING | MIIM_ID;
1223
1225 {
1226 TRACE("Error obtaining info for menu item at pos=%d\n", i);
1227 continue;
1228 }
1229
1230 count++;
1231
1232 if (info.fType & MFT_SEPARATOR)
1233 {
1235 }
1236 else if (!(info.fType & MFT_BITMAP))
1237 {
1238 info.cch++;
1239 info.dwTypeData = (PWSTR) HeapAlloc(GetProcessHeap(), 0, (info.cch + 1) * sizeof(WCHAR));
1240
1243
1244 SMINFO * sminfo = new SMINFO();
1245 sminfo->dwMask = SMIM_ICON | SMIM_FLAGS;
1246
1247 HRESULT hr = m_menuBand->_CallCBWithItemId(info.wID, SMC_GETINFO, 0, reinterpret_cast<LPARAM>(sminfo));
1249 {
1250 delete sminfo;
1251 return hr;
1252 }
1253
1254 AddButton(info.wID, info.dwTypeData, info.hSubMenu != NULL, sminfo->iIcon, reinterpret_cast<DWORD_PTR>(sminfo), last);
1255
1256 HeapFree(GetProcessHeap(), 0, info.dwTypeData);
1257 }
1258 }
1259
1260 return S_OK;
1261}
HRESULT _CallCBWithItemId(UINT Id, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: CMenuBand.cpp:770
CMenuBand * m_menuBand
Definition: CMenuToolbars.h:39
HRESULT AddSeparator(BOOL last)
HRESULT AddButton(DWORD commandId, LPCWSTR caption, BOOL hasSubMenu, INT iconId, DWORD_PTR buttonData, BOOL last)
HRESULT hr
Definition: delayimp.cpp:582
#define TRUE
Definition: types.h:120
#define GetProcessHeap()
Definition: compat.h:736
#define HeapAlloc
Definition: compat.h:733
#define HeapFree(x, y, z)
Definition: compat.h:735
#define FAILED_UNEXPECTEDLY
Definition: utils.cpp:33
unsigned int BOOL
Definition: ntddk_ex.h:94
GLuint GLuint GLsizei count
Definition: gl.h:1545
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define S_OK
Definition: intsafe.h:52
LONG_PTR LPARAM
Definition: minwindef.h:175
static const LARGE_INTEGER *static const HANDLE const LARGE_INTEGER *static PSLIST_ENTRY PSLIST_ENTRY last
Definition: sync.c:64
short WCHAR
Definition: pedump.c:58
#define MIIM_STRING
Definition: winuser.h:738
#define MIIM_ID
Definition: winuser.h:733
int WINAPI GetMenuItemCount(_In_opt_ HMENU)
#define MIIM_FTYPE
Definition: winuser.h:740
#define MFT_SEPARATOR
Definition: winuser.h:755
#define MIIM_SUBMENU
Definition: winuser.h:734
#define MFT_BITMAP
Definition: winuser.h:749
BOOL WINAPI GetMenuItemInfoW(_In_ HMENU, _In_ UINT, _In_ BOOL, _Inout_ LPMENUITEMINFOW)
@ SMIM_ICON
Definition: shobjidl.idl:2844
@ SMIM_FLAGS
Definition: shobjidl.idl:2843
struct tagSMINFO SMINFO
#define TRACE(s)
Definition: solgame.cpp:4
DWORD dwMask
Definition: shobjidl.idl:2825
uint16_t * PWSTR
Definition: typedefs.h:56
uint32_t DWORD_PTR
Definition: typedefs.h:65

Referenced by CMenuBand::SetMenu(), and CMenuBand::SetSite().

◆ GetMenu()

HRESULT CMenuStaticToolbar::GetMenu ( HMENU *  phmenu,
HWND *  phwnd,
DWORD *  pdwFlags 
)

Definition at line 1173 of file CMenuToolbars.cpp.

1177{
1178 if (phmenu)
1179 *phmenu = m_hmenu;
1180 if (phwnd)
1181 *phwnd = m_hwndMenu;
1182 if (pdwFlags)
1183 *pdwFlags = m_dwMenuFlags;
1184
1185 return S_OK;
1186}

Referenced by CMenuBand::GetMenu().

◆ InternalContextMenu()

HRESULT CMenuStaticToolbar::InternalContextMenu ( INT  iItem,
INT  index,
DWORD_PTR  dwData,
POINT  pt 
)
overrideprotectedvirtual

Reimplemented from CMenuToolbarBase.

Definition at line 1276 of file CMenuToolbars.cpp.

1277{
1278 CComPtr<IContextMenu> contextMenu;
1279 HRESULT hr = m_menuBand->_CallCBWithItemId(iItem, SMC_GETOBJECT,
1280 reinterpret_cast<WPARAM>(&IID_IContextMenu), reinterpret_cast<LPARAM>(&contextMenu));
1281 if (hr != S_OK)
1282 return hr;
1283
1284 return TrackContextMenu(contextMenu, pt);
1285}
HRESULT TrackContextMenu(IContextMenu *contextMenu, POINT pt)
#define pt(x, y)
Definition: drawing.c:79
UINT_PTR WPARAM
Definition: minwindef.h:174

◆ InternalExecuteItem()

HRESULT CMenuStaticToolbar::InternalExecuteItem ( INT  iItem,
INT  index,
DWORD_PTR  dwData 
)
overrideprotectedvirtual

Reimplemented from CMenuToolbarBase.

Definition at line 1287 of file CMenuToolbars.cpp.

1288{
1289 return m_menuBand->_CallCBWithItemId(iItem, SMC_EXEC, 0, 0);
1290}
#define SMC_EXEC
Definition: undocshell.h:872

◆ InternalGetTooltip()

HRESULT CMenuStaticToolbar::InternalGetTooltip ( INT  iItem,
INT  index,
DWORD_PTR  dwData,
LPWSTR  pszText,
INT  cchTextMax 
)
overrideprotectedvirtual

Reimplemented from CMenuToolbarBase.

Definition at line 1263 of file CMenuToolbars.cpp.

1264{
1265 //SMINFO * info = reinterpret_cast<SMINFO*>(dwData);
1267 return E_NOTIMPL;
1268}
#define UNIMPLEMENTED
Definition: ntoskrnl.c:15
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ InternalHasSubMenu()

HRESULT CMenuStaticToolbar::InternalHasSubMenu ( INT  iItem,
INT  index,
DWORD_PTR  dwData 
)
overrideprotectedvirtual

Reimplemented from CMenuToolbarBase.

Definition at line 1313 of file CMenuToolbars.cpp.

1314{
1315 return ::GetSubMenu(m_hmenu, index) ? S_OK : S_FALSE;
1316}
GLuint index
Definition: glext.h:6031
#define S_FALSE
Definition: winerror.h:3451

◆ InternalPopupItem()

HRESULT CMenuStaticToolbar::InternalPopupItem ( INT  iItem,
INT  index,
DWORD_PTR  dwData,
BOOL  keyInitiated 
)
overrideprotectedvirtual

Reimplemented from CMenuToolbarBase.

Definition at line 1292 of file CMenuToolbars.cpp.

1293{
1294 SMINFO * nfo = reinterpret_cast<SMINFO*>(dwData);
1295 if (!nfo)
1296 return E_FAIL;
1297
1298 if (nfo->dwFlags&SMIF_TRACKPOPUP)
1299 {
1300 return PopupSubMenu(iItem, index, m_hmenu);
1301 }
1302 else
1303 {
1304 CComPtr<IShellMenu> shellMenu;
1305 HRESULT hr = m_menuBand->_CallCBWithItemId(iItem, SMC_GETOBJECT, reinterpret_cast<WPARAM>(&IID_IShellMenu), reinterpret_cast<LPARAM>(&shellMenu));
1307 return hr;
1308
1309 return PopupSubMenu(iItem, index, shellMenu, keyInitiated);
1310 }
1311}
HRESULT PopupSubMenu(UINT itemId, UINT index, IShellMenu *childShellMenu, BOOL keyInitiated)
#define E_FAIL
Definition: ddrawi.h:102
static HANDLE ULONG_PTR dwData
Definition: pipe.c:111
@ SMIF_TRACKPOPUP
Definition: shobjidl.idl:2863
DWORD dwFlags
Definition: shobjidl.idl:2827

◆ OnDeletingButton()

HRESULT CMenuStaticToolbar::OnDeletingButton ( const NMTOOLBAR *  tb)
overrideprotectedvirtual

Reimplemented from CMenuToolbarBase.

Definition at line 1270 of file CMenuToolbars.cpp.

1271{
1272 delete reinterpret_cast<SMINFO*>(tb->tbButton.dwData);
1273 return S_OK;
1274}
static const WCHAR tb[]
Definition: suminfo.c:431

◆ SetMenu()

HRESULT CMenuStaticToolbar::SetMenu ( HMENU  hmenu,
HWND  hwnd,
DWORD  dwFlags 
)

Definition at line 1188 of file CMenuToolbars.cpp.

1192{
1193 m_hmenu = hmenu;
1194 m_hwndMenu = hwnd;
1196
1197 if (IsWindow())
1198 ClearToolbar();
1199
1200 return S_OK;
1201}
static HMENU hmenu
Definition: win.c:78
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
Definition: netsh.h:141
BOOL WINAPI IsWindow(_In_opt_ HWND)
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4023

Referenced by CMenuBand::SetMenu().

Member Data Documentation

◆ m_hmenu

HMENU CMenuStaticToolbar::m_hmenu
private

Definition at line 145 of file CMenuToolbars.h.

Referenced by FillToolbar(), GetMenu(), InternalHasSubMenu(), InternalPopupItem(), and SetMenu().

◆ m_hwndMenu

HWND CMenuStaticToolbar::m_hwndMenu
private

Definition at line 146 of file CMenuToolbars.h.

Referenced by GetMenu(), and SetMenu().


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