ReactOS 0.4.17-dev-684-ga6524ef
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
CMenuBandm_menuBand
 
DWORD m_dwMenuFlags
 
BOOL m_hasSizes
 
SIZE m_idealSize
 
SIZE m_itemSize
 
BOOL m_usePager
 
CMenuToolbarBasem_hotBar
 
INT m_hotItem
 
CMenuToolbarBasem_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 1152 of file CMenuToolbars.cpp.

1152 :
1153 CMenuToolbarBase(menuBand, FALSE),
1154 m_hmenu(NULL),
1156{
1157}
#define NULL
Definition: types.h:112
#define FALSE
Definition: types.h:117

◆ ~CMenuStaticToolbar()

CMenuStaticToolbar::~CMenuStaticToolbar ( )
virtual

Definition at line 1159 of file CMenuToolbars.cpp.

1160{
1161}

Member Function Documentation

◆ FillToolbar()

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

Implements CMenuToolbarBase.

Definition at line 1193 of file CMenuToolbars.cpp.

1194{
1195 int i;
1196 int ic = GetMenuItemCount(m_hmenu);
1197
1198 if (clearFirst)
1199 {
1200 ClearToolbar();
1201 }
1202
1203 int count = 0;
1204 for (i = 0; i < ic; i++)
1205 {
1206 BOOL last = i + 1 == ic;
1207
1209
1210 info.cbSize = sizeof(info);
1211 info.dwTypeData = NULL;
1212 info.fMask = MIIM_FTYPE | MIIM_STRING | MIIM_ID;
1213
1215 {
1216 TRACE("Error obtaining info for menu item at pos=%d\n", i);
1217 continue;
1218 }
1219
1220 count++;
1221
1222 if (info.fType & MFT_SEPARATOR)
1223 {
1225 }
1226 else if (!(info.fType & MFT_BITMAP))
1227 {
1228 info.cch++;
1229 info.dwTypeData = (PWSTR) HeapAlloc(GetProcessHeap(), 0, (info.cch + 1) * sizeof(WCHAR));
1230
1233
1234 SMINFO * sminfo = new SMINFO();
1235 sminfo->dwMask = SMIM_ICON | SMIM_FLAGS;
1236
1237 HRESULT hr = m_menuBand->_CallCBWithItemId(info.wID, SMC_GETINFO, 0, reinterpret_cast<LPARAM>(sminfo));
1239 {
1240 delete sminfo;
1241 return hr;
1242 }
1243
1244 AddButton(info.wID, info.dwTypeData, info.hSubMenu != NULL, sminfo->iIcon, reinterpret_cast<DWORD_PTR>(sminfo), last);
1245
1246 HeapFree(GetProcessHeap(), 0, info.dwTypeData);
1247 }
1248 }
1249
1250 return S_OK;
1251}
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
@ SMIM_ICON
Definition: shobjidl.idl:2830
@ SMIM_FLAGS
Definition: shobjidl.idl:2829
struct tagSMINFO SMINFO
#define TRACE(s)
Definition: solgame.cpp:4
DWORD dwMask
Definition: shobjidl.idl:2811
uint16_t * PWSTR
Definition: typedefs.h:56
uint32_t DWORD_PTR
Definition: typedefs.h:65
#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)

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

◆ GetMenu()

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

Definition at line 1163 of file CMenuToolbars.cpp.

1167{
1168 if (phmenu)
1169 *phmenu = m_hmenu;
1170 if (phwnd)
1171 *phwnd = m_hwndMenu;
1172 if (pdwFlags)
1173 *pdwFlags = m_dwMenuFlags;
1174
1175 return S_OK;
1176}

Referenced by CMenuBand::GetMenu().

◆ InternalContextMenu()

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

Reimplemented from CMenuToolbarBase.

Definition at line 1266 of file CMenuToolbars.cpp.

1267{
1268 CComPtr<IContextMenu> contextMenu;
1269 HRESULT hr = m_menuBand->_CallCBWithItemId(iItem, SMC_GETOBJECT,
1270 reinterpret_cast<WPARAM>(&IID_IContextMenu), reinterpret_cast<LPARAM>(&contextMenu));
1271 if (hr != S_OK)
1272 return hr;
1273
1274 return TrackContextMenu(contextMenu, pt);
1275}
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 1277 of file CMenuToolbars.cpp.

1278{
1279 return m_menuBand->_CallCBWithItemId(iItem, SMC_EXEC, 0, 0);
1280}
#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 1253 of file CMenuToolbars.cpp.

1254{
1255 //SMINFO * info = reinterpret_cast<SMINFO*>(dwData);
1257 return E_NOTIMPL;
1258}
#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 1303 of file CMenuToolbars.cpp.

1304{
1305 return ::GetSubMenu(m_hmenu, index) ? S_OK : S_FALSE;
1306}
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 1282 of file CMenuToolbars.cpp.

1283{
1284 SMINFO * nfo = reinterpret_cast<SMINFO*>(dwData);
1285 if (!nfo)
1286 return E_FAIL;
1287
1288 if (nfo->dwFlags&SMIF_TRACKPOPUP)
1289 {
1290 return PopupSubMenu(iItem, index, m_hmenu);
1291 }
1292 else
1293 {
1294 CComPtr<IShellMenu> shellMenu;
1295 HRESULT hr = m_menuBand->_CallCBWithItemId(iItem, SMC_GETOBJECT, reinterpret_cast<WPARAM>(&IID_IShellMenu), reinterpret_cast<LPARAM>(&shellMenu));
1297 return hr;
1298
1299 return PopupSubMenu(iItem, index, shellMenu, keyInitiated);
1300 }
1301}
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:2849
DWORD dwFlags
Definition: shobjidl.idl:2813

◆ OnDeletingButton()

HRESULT CMenuStaticToolbar::OnDeletingButton ( const NMTOOLBAR tb)
overrideprotectedvirtual

Reimplemented from CMenuToolbarBase.

Definition at line 1260 of file CMenuToolbars.cpp.

1261{
1262 delete reinterpret_cast<SMINFO*>(tb->tbButton.dwData);
1263 return S_OK;
1264}
static const WCHAR tb[]
Definition: suminfo.c:285

◆ SetMenu()

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

Definition at line 1178 of file CMenuToolbars.cpp.

1182{
1183 m_hmenu = hmenu;
1184 m_hwndMenu = hwnd;
1186
1187 if (IsWindow())
1188 ClearToolbar();
1189
1190 return S_OK;
1191}
static HMENU hmenu
Definition: win.c:78
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
Definition: netsh.h:141
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4023
BOOL WINAPI IsWindow(_In_opt_ HWND)

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: