21 #include <commoncontrols.h> 29 #define IDS_MENU_EMPTY 34561 34 #define USE_TBSTYLE_EX_VERTICAL 0 37 #define TIMERID_HOTTRACK 1 114 TRACE(
"WM_NOTIFY unknown code %d, %d\n",
hdr->code,
hdr->idFrom);
119 if (
wParam == SPI_SETFLATMENU)
133 TRACE(
"DisableMouseTrack %d\n", bDisable);
155 bool isHot, isPopup, isActive;
236 btni.cbSize =
sizeof(btni);
267 m_useFlatMenus(
FALSE),
268 m_disableMouseTrack(
FALSE),
269 m_timerEnabled(
FALSE),
270 m_menuBand(menuBand),
273 m_usePager(usePager),
278 m_isTrackingPopup(
FALSE),
279 m_cancelingPopup(
FALSE)
324 if ((
m_initFlags & (SMINIT_TOPLEVEL | SMINIT_VERTICAL)) == SMINIT_TOPLEVEL)
381 #if USE_TBSTYLE_EX_VERTICAL 420 m_pager.SubclassWindow(hwndPager);
445 TRACE(
"Sizes out of date, recalculating.\n");
456 TRACE(
"Ideal Size: (%d, %d) for %d buttons\n",
m_idealSize, GetButtonCount());
491 DWORD btnSize = GetButtonSize();
500 if (m_hWnd && m_hWnd ==
hwnd)
return S_OK;
523 INT iItem = tip->iItem;
585 TRACE(
"Hot item change prevented by DisableMouseTrack\n");
590 if (
m_hotBar ==
this && toolbar !=
this)
671 if (!GetButton(
idx, &btn))
696 if (!GetButton(
idx, &btn))
699 TRACE(
"ChangeTrackedItem %d, %d\n",
idx, wasTracking);
709 if (!GetItemRect(
index, &rc))
750 if (!GetItemRect(
index, &rc))
794 TRACE(
"BeforeCancelPopup\n");
802 TRACE(
"Item click prevented by DisableMouseTrack\n");
809 TRACE(
"OnCommand cancelled because it was tracking submenu.\n");
815 TRACE(
"PopupItem returned S_OK\n");
819 TRACE(
"Executing...\n");
841 GetButton(iIndex, &btn);
863 GetButton(iIndex, &btn);
889 if (dwSelectType != 0xFFFFFFFF)
891 int count = GetButtonCount();
898 else if (dwSelectType ==
VK_END)
901 dwSelectType =
VK_UP;
915 if (dwSelectType ==
VK_UP)
919 else if (dwSelectType ==
VK_DOWN)
926 if (dwSelectType ==
VK_UP)
930 else if (dwSelectType ==
VK_DOWN)
962 if (dwSelectType ==
VK_UP)
966 else if (dwSelectType ==
VK_DOWN)
977 TRACE(
"Setting Hot item to null\n");
989 #if !USE_TBSTYLE_EX_VERTICAL 1009 if (!AddButtons(1, &tbb))
1019 #if !USE_TBSTYLE_EX_VERTICAL 1028 if (!AddButtons(1, &tbb))
1037 WCHAR MenuString[128];
1048 if (!AddButtons(1, &tbb))
1056 while (DeleteButton(0))
1080 int index = GetButtonInfo(iItem, &
info);
1124 TRACE(
"PopupItem non-vertical %d %d\n",
index, iItem);
1182 for (
i = 0;
i < ic;
i++)
1194 TRACE(
"Error obtaining info for menu item at pos=%d\n",
i);
1240 delete reinterpret_cast<SMINFO*>(
tb->tbButton.dwData);
1246 CComPtr<IContextMenu> contextMenu;
1248 reinterpret_cast<WPARAM>(&IID_IContextMenu), reinterpret_cast<LPARAM>(&contextMenu));
1272 CComPtr<IShellMenu> shellMenu;
1288 m_shellFolder(
NULL),
1316 CComPtr<IEnumIDList> eidl;
1374 SFGAOF attrs = SFGAO_FOLDER;
1400 ILFree(reinterpret_cast<LPITEMIDLIST>(
tb->tbButton.dwData));
1436 ERR(
"ILClone failed!\n");
1437 (*reinterpret_cast<IUnknown**>(
ppv))->
Release();
1451 CComPtr<IContextMenu> contextMenu =
NULL;
1476 CComPtr<IShellMenuCallback> psmc;
1477 CComPtr<IShellMenu> shellMenu;
1491 hr = shellMenu->Initialize(psmc, 0, uId, SMINIT_VERTICAL);
1495 CComPtr<IShellFolder> childFolder;
1500 hr = shellMenu->SetShellFolder(childFolder,
NULL,
NULL, SMSET_TOP);
1512 SFGAOF attrs = SFGAO_FOLDER;
#define TBSTYLE_EX_DOUBLEBUFFER
void WINAPI ILFree(LPITEMIDLIST pidl)
HDPA WINAPI DPA_Create(INT nGrow)
#define HRESULT_FROM_WIN32(x)
VOID WINAPI CoTaskMemFree(LPVOID ptr)
BOOL WINAPI ClientToScreen(_In_ HWND, _Inout_ LPPOINT)
BOOL WINAPI DPA_Destroy(HDPA hdpa)
#define CDRF_NOTIFYPOSTPAINT
#define TBSTYLE_CUSTOMERASE
HWND WINAPI SetParent(_In_ HWND, _In_opt_ HWND)
#define TBSTYLE_TRANSPARENT
HRESULT _GetTopLevelWindow(HWND *topLevel)
GLuint GLuint GLsizei count
#define NM_RELEASEDCAPTURE
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
#define SystemParametersInfo
static HANDLE ULONG_PTR dwData
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
#define CDDS_ITEMPREPAINT
DWORD WINAPI GetLastError(VOID)
BOOL WINAPI DeleteObject(_In_ HGDIOBJ)
GLint GLint GLint GLint GLint x
DWORD WINAPI GetMessagePos(void)
virtual HRESULT STDMETHODCALLTYPE GetMenuInfo(IShellMenuCallback **ppsmc, UINT *puId, UINT *puIdAncestor, DWORD *pdwFlags)
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
#define IID_PPV_ARG(Itype, ppType)
HRESULT _CancelCurrentPopup()
BOOL WINAPI DestroyWindow(_In_ HWND)
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
DWORD WINAPI GetSysColor(_In_ int)
#define DPA_AppendPtr(hdpa, pitem)
#define TBN_HOTITEMCHANGE
HRESULT CompareIDs([in] LPARAM lParam, [in] PCUIDLIST_RELATIVE pidl1, [in] PCUIDLIST_RELATIVE pidl2)
unsigned short(__cdecl typeof(TIFFCurrentDirectory))(struct tiff *)
int WINAPI SetBkMode(_In_ HDC, _In_ int)
HRESULT _KillPopupTimers()
#define TBSTYLE_REGISTERDROP
BOOL WINAPI IsAppThemed(void)
#define SubclassWindow(hwnd, lpfn)
HRESULT WINAPI SHGetImageList(int iImageList, REFIID riid, void **ppv)
HRESULT _ChangeHotItem(CMenuToolbarBase *tb, INT id, DWORD dwFlags)
#define CLIP_DEFAULT_PRECIS
int WINAPI GetMenuItemCount(_In_opt_ HMENU)
HRESULT WINAPI SetWindowTheme(_In_ HWND hwnd, _In_ LPCWSTR pszSubAppName, _In_ LPCWSTR pszSubIdList)
_Out_opt_ int _Out_opt_ int * cy
#define CCS_NOPARENTALIGN
#define DPA_GetPtrCount(hdpa)
#define CDRF_NOTIFYITEMDRAW
#define COLOR_HIGHLIGHTTEXT
HRESULT _OnPopupSubMenu(IShellMenu *childShellMenu, POINTL *pAt, RECTL *pExclude, BOOL mouseInitiated)
HRESULT _CallCBWithItemPidl(LPITEMIDLIST pidl, UINT uMsg, WPARAM wParam, LPARAM lParam)
UINT_PTR WINAPI SetTimer(_In_opt_ HWND, _In_ UINT_PTR, _In_ UINT, _In_opt_ TIMERPROC)
HRESULT _ChangePopupItem(CMenuToolbarBase *tb, INT id)
#define IID_NULL_PPV_ARG(Itype, ppType)
BOOL WINAPI GetMenuItemInfoW(_In_ HMENU, _In_ UINT, _In_ BOOL, _Inout_ LPMENUITEMINFOW)
GLboolean GLboolean GLboolean b
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
HRESULT _TrackContextMenu(IContextMenu *popup, INT x, INT y)
#define FAILED_UNEXPECTEDLY(hr)
BOOL WINAPI InvalidateRect(_In_opt_ HWND, _In_opt_ LPCRECT, _In_ BOOL)
#define OUT_DEFAULT_PRECIS
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
BOOL WINAPI KillTimer(_In_opt_ HWND, _In_ UINT_PTR)
HRESULT _CallCBWithItemId(UINT Id, UINT uMsg, WPARAM wParam, LPARAM lParam)
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
BOOL WINAPI DPA_Sort(HDPA hdpa, PFNDPACOMPARE pfnCompare, LPARAM lParam)
static VOID SetImageList(HWND hwnd)
HMENU WINAPI GetSubMenu(_In_ HMENU, _In_ int)
HRESULT AdjustForTheme(BOOL bFlatStyle)
COLORREF WINAPI SetTextColor(_In_ HDC, _In_ COLORREF)
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
_Out_ PULONG _Out_ PULONG pIndex
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
LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST pidl)
HRESULT _TrackSubMenu(HMENU popup, INT x, INT y, RECT &rcExclude)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define TBCDRF_NOBACKGROUND
HWND WINAPI GetForegroundWindow(void)
GLint GLint GLint GLint GLint GLint y
const ITEMIDLIST_RELATIVE UNALIGNED * PCUIDLIST_RELATIVE
BOOL WINAPI PostMessageW(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
int WINAPI SHMapPIDLToSystemImageListIndex(IShellFolder *sh, LPCITEMIDLIST pidl, int *pIndex)
BOOL WINAPI SetWindowPos(_In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
GLboolean GLboolean GLboolean GLboolean a
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
#define CDDS_ITEMPOSTPAINT
#define NM_TOOLTIPSCREATED
int WINAPI FillRect(HDC, LPCRECT, HBRUSH)
HBRUSH WINAPI GetSysColorBrush(_In_ int)
ITEMIDLIST UNALIGNED * LPITEMIDLIST
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
SMDM_TOOLBAR struct tagSMINFO SMINFO
#define HeapFree(x, y, z)
#define TBN_DELETINGBUTTON
static IShellFolder IShellItem **static IBindCtx LPITEMIDLIST SFGAOF
#define TBSTYLE_EX_VERTICAL
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
HRESULT _MenuItemSelect(DWORD changeType)