23#include <commoncontrols.h>
29#define WM_APP_TRAYDESTROY (WM_APP + 0x100)
31#define TIMER_ID_AUTOHIDE 1
32#define TIMER_ID_MOUSETRACK 2
33#define MOUSETRACK_INTERVAL 100
34#define AUTOHIDE_DELAY_HIDE 2000
35#define AUTOHIDE_DELAY_SHOW 50
36#define AUTOHIDE_INTERVAL_ANIMATING 10
38#define AUTOHIDE_SPEED_SHOW 10
39#define AUTOHIDE_SPEED_HIDE 1
41#define AUTOHIDE_HIDDEN 0
42#define AUTOHIDE_SHOWING 1
43#define AUTOHIDE_SHOWN 2
44#define AUTOHIDE_HIDING 3
47#define IDHK_MINIMIZE_ALL 0x1f5
48#define IDHK_RESTORE_ALL 0x1f6
49#define IDHK_HELP 0x1f7
50#define IDHK_EXPLORE 0x1f8
51#define IDHK_FIND 0x1f9
52#define IDHK_FIND_COMPUTER 0x1fa
53#define IDHK_NEXT_TASK 0x1fb
54#define IDHK_PREV_TASK 0x1fc
55#define IDHK_SYS_PROPERTIES 0x1fd
56#define IDHK_DESKTOP 0x1fe
57#define IDHK_PAGER 0x1ff
151 RECT rcWindow, rcMonitor, rcIntersect;
152 rcMonitor =
info.rcMonitor;
192const GUID IID_IShellDesktopTray = { 0x213e2df9, 0x9a14, 0x4328, { 0x99, 0xb1, 0x69, 0x61, 0xf9, 0x14, 0x3c, 0xe9 } };
243 NONCLIENTMETRICS ncm = {
sizeof(ncm)};
250 ncm.lfCaptionFont.lfWeight =
FW_BOLD;
278 WCHAR szStartCaption[32];
284 wcscpy(szStartCaption,
L"Start");
325 public CWindowImpl < CTrayWindow, CWindow, CControlWinTraits >,
327 public IShellDesktopTray,
445 WCHAR szCommand[256];
446 WCHAR *pszParameters;
456 pszParameters =
wcschr(szCommand,
L'>');
518 CStringW strDefaultDir, strHomePath;
521 strDefaultDir += strHomePath;
534 return This->RunFileDlgThread();
543 if (hRunDlg !=
NULL &&
587 return This->TrayPropertiesThread();
597 if (hTrayProp !=
NULL &&
730 TRACE(
"ITrayWindow::ExecContextMenuCmd(%u): Unhandled Command ID!\n", uiCmd);
888 if (hwndExclude !=
NULL)
935 fuFlags |= (TrackUp ? TPM_VERNEGANIMATION : TPM_VERPOSANIMATION);
975 TRACE(
"Before Query\n");
976 hr = contextMenu->QueryContextMenu(popup, 0, 0,
UINT_MAX, CMF_NORMAL);
979 TRACE(
"Query failed\n");
984 TRACE(
"Before Tracking\n");
1002 TRACE(
"Before InvokeCommand\n");
1004 cmi.
cbSize =
sizeof(cmi);
1007 hr = contextMenu->InvokeCommand(&cmi);
1011 TRACE(
"TrackPopupMenu failed. Code=%d, LastError=%d\n", uCommand,
GetLastError());
1035 NONCLIENTMETRICS ncm = {
sizeof(ncm)};
1038 ERR(
"SPI_GETNONCLIENTMETRICS failed\n");
1049 ERR(
"CreateFontIndirect failed\n");
1100 pt.x = pRect->left + ((pRect->right - pRect->left) / 2);
1101 pt.y = pRect->top + ((pRect->bottom - pRect->top) / 2);
1116 if (hMonitor !=
NULL)
1130 goto GetPrimaryRect;
1178 IN const SIZE *pTraySize,
1184 pRect->right = pRect->left + pTraySize->cx;
1188 pRect->bottom = pRect->top + pTraySize->cy;
1192 pRect->left = pRect->right - pTraySize->cx;
1197 pRect->top = pRect->bottom - pTraySize->cy;
1207 if (pTraySize ==
NULL)
1239 szWnd.
cx = pRect->right - pRect->left;
1240 szWnd.
cy = pRect->bottom - pRect->top;
1245 MONITOR_DEFAULTTONEAREST);
1251 if (szWnd.
cx > szMax.
cx)
1252 szWnd.
cx = szMax.
cx;
1253 if (szWnd.
cy > szMax.
cy)
1254 szWnd.
cy = szMax.
cy;
1268 GetMinimumWindowSize(
1292 SIZE DeltaPt, ScreenOffset;
1308 goto GetPrimaryScreenRect;
1323GetPrimaryScreenRect:
1324 ScreenOffset.
cx = 0;
1325 ScreenOffset.
cy = 0;
1331 if (
pt.x < rcScreen.
right / 2)
1363 if (hMon != hMonNew)
1396 pt.x = pRect->left + ((pRect->right - pRect->left) / 2);
1397 pt.y = pRect->top + ((pRect->bottom - pRect->top) / 2);
1411 rcTray.
left = pwp->x;
1412 rcTray.
top = pwp->y;
1446 rcTray.
left = pwp->x;
1447 rcTray.
top = pwp->y;
1492 pwp->x = rcTray.
left;
1493 pwp->y = rcTray.
top;
1501 RECT rcClip, rcWindow;
1539 RECT rcTray, rcWorkArea;
1614 SIZE WndSize, EdgeSize, DlgFrameSize;
1654 WndSize.
cx = 2 * (EdgeSize.
cx + DlgFrameSize.
cx);
1655 WndSize.
cy = StartBtnSize.
cy + (2 * (EdgeSize.
cy + DlgFrameSize.
cy));
1659 WndSize.
cx = StartBtnSize.
cx;
1660 WndSize.
cy = StartBtnSize.
cy - EdgeSize.
cy;
1691 SIZE TraySize, StartSize;
1692 POINT ptTrayNotify = { 0, 0 };
1697 if (prcClient !=
NULL)
1699 rcClient = *prcClient;
1723 if (StartSize.
cx > rcClient.
right)
1724 StartSize.
cx = rcClient.
right;
1727 if (hwndTaskToolbar)
1747 ERR(
"DeferWindowPos for start button failed. lastErr=%d\n",
GetLastError());
1772 ptTrayNotify.
x = rcClient.
right - TraySize.
cx;
1774 ptTrayNotify.
y = rcClient.
bottom - TraySize.
cy;
1786 ERR(
"DeferWindowPos for notification area failed. lastErr=%d\n",
GetLastError());
1794 POINT ptRebar = { 0, 0 };
1802 szRebar.
cx = ptTrayNotify.
x - ptRebar.
x;
1809 szRebar.
cy = ptTrayNotify.
y - ptRebar.
y;
1835 RECT rebarRect, taskbarRect, clientRect;
1852 pRect->
bottom = pRect->
top + rebarRect.bottom - rebarRect.top +
margins.cy;
1855 rebarRect.top = rebarRect.bottom - (pRect->
bottom - pRect->
top -
margins.cy);
1857 pRect->
top = pRect->
bottom - (rebarRect.bottom - rebarRect.top +
margins.cy);
1860 rebarRect.right = rebarRect.left + (pRect->
right - pRect->
left -
margins.cx);
1862 pRect->
right = pRect->
left + (rebarRect.right - rebarRect.left +
margins.cx);
1865 rebarRect.left = rebarRect.right - (pRect->
right - pRect->
left -
margins.cx);
1867 pRect->
left = pRect->
right - (rebarRect.right - rebarRect.left +
margins.cx);
1888 pt.y = rcExclude.
top;
1898 pt.y = rcExclude.
top;
1903 pt.y = rcExclude.
top;
1935 TRACE(
"AutoHide cancelling hide.\n");
1941 TRACE(
"AutoHide starting show.\n");
1950 TRACE(
"AutoHide cancelling show.\n");
1956 TRACE(
"AutoHide starting hide.\n");
2239 RECT rcGripper = {0};
2330 ((ITrayWindow*)
this)->
AddRef();
2410#define TIMER_ID_IGNOREPULSERESET 888
2411#define TIMER_IGNOREPULSERESET_TIMEOUT 200
2448 if (
wParam == SPI_SETNONCLIENTMETRICS)
2470 FIXME(
"Use UpdateStartMenu\n");
2507 switch (pCopyData->
dwData)
2595 if (
pt.x < rcClient.
left)
2600 if (
pt.y < rcClient.
top)
2668 rcClient.
left = rcClient.
top = 0;
2712 static const UINT uidDisableItem [] = {
2726 if (hSysMenu !=
NULL)
2767 if (!ppt || !prcStartBtn || !pwi)
2775 if (ppt->
x > prcStartBtn->
right || ppt->
y > prcStartBtn->
bottom)
2781 if (ppt->
x < prcStartBtn->
left || ppt->
y > prcStartBtn->
bottom)
2785 ppt->
x > prcStartBtn->
right)
2793 if (ppt->
x > prcStartBtn->
right || ppt->
y < prcStartBtn->
top)
2810 if (!ppt || !prcShowDesktopBtn)
2817 return !(ppt->
x > prcShowDesktopBtn->
right || ppt->
y < prcShowDesktopBtn->
top);
2819 return !(ppt->
x < prcShowDesktopBtn->
left || ppt->
y > prcShowDesktopBtn->
bottom);
2821 return !(ppt->
x < prcShowDesktopBtn->
left || ppt->
y < prcShowDesktopBtn->
top);
2823 return !(ppt->
x < prcShowDesktopBtn->
left || ppt->
y < prcShowDesktopBtn->
top);
2879 if (
pt.x != -1 ||
pt.y != -1)
2901 POINT ptClient = *ppt;
2907 if (hWndAtPt !=
NULL &&
2916 goto HandleTrayContextMenu;
2922 goto HandleTrayContextMenu;
2926HandleTrayContextMenu:
3063 ::SetForegroundWindow(hwndActive);
3096 return wcscmp(szClass,
L"#32770") == 0;
3105 if (!
info->bShowDesktop)
3120 info->pMinimizedAll->Add(mwp);
3137 info.bShowDesktop = bShowDesktop;
3241 rc = &prms->
rgrc[0];
3307 szWindow.
cx - szTarget.
cx,
3308 szWindow.
cy - szTarget.
cx,
3314 szWindow.
cx = szActual.
cx + borders.
cx;
3317 szWindow.
cy = szActual.
cy + borders.
cy;
3320 szWindow.
cx = szActual.
cx + borders.
cx;
3324 szWindow.
cy = szActual.
cy + borders.
cy;
3474 if (!Ret || Ret == -1)
3500 TRACE(
"IShellDesktopTray::GetState() unimplemented!\n");
3507 TRACE(
"IShellDesktopTray::GetTrayWindow(0x%p)\n", phWndTray);
3515 TRACE(
"IShellDesktopTray::RegisterDesktopWindow(0x%p)\n", hWndDesktop);
3524 TRACE(
"IShellDesktopTray::Unknown(%u,%u) unimplemented!\n", dwUnknown1, dwUnknown2);
3581 this->hWndOwner = hWndOwner;
3582 this->m_idCmdCmFirst = 0;
3623 m_idCmdCmFirst = idCmdNext - idCmdFirst;
3627 if (TrayWnd->m_TrayBandSite !=
NULL)
3630 if (
FAILED(TrayWnd->m_TrayBandSite->AddContextMenus(
3638 WARN(
"AddContextMenus failed.\n");
3652 if (uiCmdId >= m_idCmdCmFirst)
3659 cmici.
cbSize =
sizeof(cmici);
3660 cmici.
hwnd = hWndOwner;
3664 pcm->InvokeCommand(&cmici);
3669 TrayWnd->ExecContextMenuCmd(uiCmdId);
3717 *ppTray = (ITrayWindow *) Tray;
HINSTANCE hExplorerInstance
VOID DisplayTrayProperties(IN HWND hwndOwner, IN HWND hwndTaskbar)
#define TWM_OPENSTARTMENU
HRESULT UpdateStartMenu(IN OUT IMenuPopup *pMenuPopup, IN HBITMAP hbmBanner OPTIONAL, IN BOOL bSmallIcons, IN BOOL bRefresh)
#define TSWM_UPDATETASKBARPOS
#define TNWM_GETMINIMUMSIZE
HRESULT CStartMenuBtnCtxMenu_CreateInstance(ITrayWindow *TrayWnd, IN HWND hWndOwner, IContextMenu **ppCtxMenu)
HMENU LoadPopupMenu(IN HINSTANCE hInstance, IN LPCWSTR lpMenuName)
#define TWM_GETTASKSWITCH
IMenuPopup * CreateStartMenu(IN ITrayWindow *Tray, OUT IMenuBand **ppMenuBand, IN HBITMAP hbmBanner OPTIONAL, IN BOOL bSmallIcons)
TaskbarSettings g_TaskbarSettings
HRESULT CTrayNotifyWnd_CreateInstance(HWND hwndParent, REFIID riid, void **ppv)
HRESULT CTrayBandSite_CreateInstance(IN ITrayWindow *tray, IN IDeskBand *pTaskBand, OUT ITrayBandSite **pBandSite)
#define TWM_SETTINGSCHANGED
#define TNWM_GETSHOWDESKTOPBUTTON
HRESULT InitShellServices(HDPA *phdpa)
HRESULT CTaskBand_CreateInstance(IN ITrayWindow *Tray, HWND hWndStartButton, REFIID riid, void **ppv)
HRESULT ShutdownShellServices(HDPA hdpa)
#define ID_SHELL_CMD_OPEN_TASKMGR
#define ID_SHELL_CMD_CUST_NOTIF
#define ID_SHELL_CMD_UNDO_ACTION
#define ID_SHELL_CMD_PROPERTIES
#define ID_SHELL_CMD_TILE_WND_H
#define IDS_TRAYWND_UNDO_TILE
#define ID_SHELL_CMD_CASCADE_WND
#define ID_SHELL_CMD_RESTORE_ALL
#define ID_SHELL_CMD_TILE_WND_V
#define ID_SHELL_CMD_SHOW_DESKTOP
#define IDS_TRAYWND_UNDO_CASCADE
#define ID_SHELL_CMD_EXPLORE_ALL_USERS
#define ID_SHELL_CMD_ADJUST_DAT
#define ID_SHELL_CMD_OPEN_ALL_USERS
#define STDMETHODCALLTYPE
BOOL GetEnvironmentVariable(_In_z_ PCXSTR pszVar)
HWND GetLastActivePopup() const
LRESULT SendMessage(UINT message, WPARAM wParam=0, LPARAM lParam=0)
HDWP DeferWindowPos(HDWP hWinPosInfo, HWND hWndInsertAfter, int x, int y, int cx, int cy, UINT uFlags)
BOOL GetWindowRect(LPRECT lpRect) const
CWindow GetParent() const
BOOL IsWindowVisible() const
BOOL IsWindowEnabled() const
BOOL PostMessage(UINT message, WPARAM wParam=0, LPARAM lParam=0)
LRESULT OnHotkey(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
LRESULT OnEnterSizeMove(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
VOID OpenTaskManager(IN HWND hWndOwner)
LRESULT OnSettingChanged(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
LRESULT OnSysColorChange(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
LRESULT OnExitSizeMove(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
LRESULT OnThemeChanged(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
LRESULT OnNcPaint(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
LRESULT OnTaskbarSettingsChanged(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
DWORD GetDraggingRectFromPt(IN POINT pt, OUT RECT *pRect, OUT HMONITOR *phMonitor)
LRESULT OnMouseMove(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
CStartButton m_StartButton
LRESULT OnDoExitWindows(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
HWND STDMETHODCALLTYPE GetHWND()
void FitToRebar(PRECT pRect)
LRESULT HandleCommand(UINT uCommand)
LRESULT OnCtlColorBtn(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
CComPtr< ITrayBandSite > m_TrayBandSite
int DrawSizerWithTheme(IN HRGN hRgn)
HMONITOR GetScreenRectFromRect(IN OUT RECT *pRect, IN DWORD dwFlags)
BOOL STDMETHODCALLTYPE IsHorizontal()
TRACKMOUSEEVENT m_MouseTrackingInfo
CComPtr< IDeskBand > m_TaskBand
HMONITOR m_PreviousMonitor
LRESULT OnInitMenuPopup(INT code, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
LRESULT OnEraseBackground(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
DWORD WINAPI TrayPropertiesThread()
LRESULT OnNcCalcSize(INT code, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
void RestoreMinimizedNonTaskWnds(BOOL bDestroyed, HWND hwndActive)
HMONITOR GetScreenRect(IN HMONITOR hMonitor, IN OUT RECT *pRect)
LRESULT OnNotify(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
LRESULT OnCopyData(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
static DWORD WINAPI s_RunFileDlgThread(IN OUT PVOID pParam)
LRESULT OnNcRButtonUp(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
VOID TrayProcessMessages()
HMONITOR m_DraggingMonitor
HRESULT STDMETHODCALLTYPE GetCommandString(UINT_PTR idCmd, UINT uType, UINT *pwReserved, LPSTR pszName, UINT cchMax)
LRESULT OnEndSession(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
BOOL STDMETHODCALLTYPE IsTaskWnd(HWND hWnd)
BOOL IsPointWithinShowDesktopButton(LPPOINT ppt, LPRECT prcShowDesktopBtn, PWINDOWINFO pwi)
LRESULT EraseBackgroundWithTheme(HDC hdc)
CComPtr< IMenuPopup > m_StartMenuPopup
HWND STDMETHODCALLTYPE DisplayProperties()
VOID AdjustSizerRect(RECT *rc, DWORD pos)
STDMETHODIMP GetTrayWindow(OUT HWND *phWndTray) override
HMONITOR CalculateValidSize(IN DWORD Position, IN OUT RECT *pRect)
void ProcessMouseTracking()
LRESULT OnNcLButtonDblClick(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
LRESULT OnNcLButtonDown(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
LRESULT OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
BOOL STDMETHODCALLTYPE Lock(IN BOOL bLock)
VOID ApplyClipping(IN BOOL Clip)
LRESULT OnContextMenu(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
static BOOL CALLBACK MinimizeWindowsProc(HWND hwnd, LPARAM lParam)
HRESULT STDMETHODCALLTYPE Open()
LRESULT OnGetTaskSwitch(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
LRESULT OnSysChar(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
LRESULT OnTimer(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
HRESULT ExecResourceCmd(int id)
static DWORD WINAPI s_TrayPropertiesThread(IN OUT PVOID pParam)
VOID OpenCommonStartMenuDirectory(IN HWND hWndOwner, IN LPCTSTR lpOperation)
static BOOL IsDialog(HWND hwnd)
HRESULT STDMETHODCALLTYPE Close()
VOID CheckTrayWndPosition()
LRESULT OnNcLButtonUp(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
LRESULT OnSysCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
CComPtr< IUnknown > m_TrayNotifyInstance
LRESULT OnMoving(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
LRESULT HandleHotKey(DWORD id)
STDMETHODIMP RegisterDesktopWindow(IN HWND hWndDesktop) override
LRESULT OnSizing(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
CTrayShowDesktopButton * m_pShowDesktopButton
VOID AlignControls(IN PRECT prcClient OPTIONAL)
LRESULT OnOpenStartMenu(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
HWND m_TrayPropertiesOwner
void DrawShowDesktopButton()
LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
LRESULT OnCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
LRESULT OnAppTrayDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
VOID MakeTrayRectWithSize(IN DWORD Position, IN const SIZE *pTraySize, IN OUT RECT *pRect)
HRESULT STDMETHODCALLTYPE InvokeCommand(LPCMINVOKECOMMANDINFO lpici)
STDMETHODIMP Unknown(IN DWORD dwUnknown1, IN DWORD dwUnknown2) override
STDMETHODIMP ContextSensitiveHelp(BOOL fEnterMode) override
DWORD GetDraggingRectFromRect(IN OUT RECT *pRect, OUT HMONITOR *phMonitor)
BOOL STDMETHODCALLTYPE IsSpecialHWND(IN HWND hWnd)
LRESULT OnPulse(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
LRESULT OnNcHitTest(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
VOID MinimizeAll(BOOL bShowDesktop=FALSE)
STDMETHODIMP GetWindow(HWND *phwnd) override
VOID GetTrayRectFromScreenRect(IN DWORD Position, IN const RECT *pScreen, IN const SIZE *pTraySize OPTIONAL, OUT RECT *pRect)
LRESULT OnLButtonUp(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
virtual HRESULT RaiseStartButton()
HMONITOR GetMonitorFromRect(IN const RECT *pRect)
LRESULT OnNcActivate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
UINT TrackMenu(IN HMENU hMenu, IN POINT *ppt OPTIONAL, IN HWND hwndExclude OPTIONAL, IN BOOL TrackUp, IN BOOL IsContextMenu)
DWORD WINAPI RunFileDlgThread()
LRESULT OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
HRESULT TrackCtxMenu(IN IContextMenu *contextMenu, IN POINT *ppt OPTIONAL, IN HWND hwndExclude OPTIONAL, IN BOOL TrackUp, IN PVOID Context OPTIONAL)
LRESULT OnDisplayChange(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
LRESULT OnWindowPosChanging(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
BOOL IsPointWithinStartButton(LPPOINT ppt, LPRECT prcStartBtn, PWINDOWINFO pwi)
CComPtr< IMenuBand > m_StartMenuBand
VOID ChangingWinPos(IN OUT LPWINDOWPOS pwp)
CComPtr< IContextMenu > m_ContextMenu
HRESULT STDMETHODCALLTYPE QueryContextMenu(HMENU hPopup, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags)
LRESULT OnRebarAutoSize(INT code, LPNMHDR nmhdr, BOOL &bHandled)
BOOL STDMETHODCALLTYPE ExecContextMenuCmd(IN UINT uiCmd)
BOOL WINAPI ImageList_Destroy(HIMAGELIST himl)
HIMAGELIST WINAPI ImageList_LoadImageW(HINSTANCE hi, LPCWSTR lpbmp, INT cx, INT cGrow, COLORREF clrMask, UINT uType, UINT uFlags)
#define FAILED_UNEXPECTEDLY(hr)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateThread(IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN DWORD dwStackSize, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter, IN DWORD dwCreationFlags, OUT LPDWORD lpThreadId)
int WINAPI lstrcmpiW(LPCWSTR str1, LPCWSTR str2)
EXTERN_C int WINAPI LogoffWindowsDialog(HWND hWndOwner)
void WINAPI ExitWindowsDialog(HWND hWndOwner)
void WINAPI RunFileDlg(HWND hWndOwner, HICON hIcon, LPCWSTR lpstrDirectory, LPCWSTR lpstrTitle, LPCWSTR lpstrDescription, UINT uFlags)
EXTERN_C BOOL WINAPI SHFindComputer(LPCITEMIDLIST pidlRoot, LPCITEMIDLIST pidlSavedSearch)
HRESULT WINAPI IUnknown_Exec(IUnknown *lpUnknown, REFGUID pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
HRESULT WINAPI IUnknown_GetWindow(IUnknown *lpUnknown, HWND *lphWnd)
HRESULT WINAPI DrawThemeBackground(HTHEME hTheme, HDC hdc, int iPartId, int iStateId, const RECT *pRect, const RECT *pClipRect)
HRESULT WINAPI GetThemePartSize(HTHEME hTheme, HDC hdc, int iPartId, int iStateId, RECT *prc, THEMESIZE eSize, SIZE *psz)
HTHEME WINAPI OpenThemeData(HWND hwnd, LPCWSTR classlist)
HRESULT WINAPI CloseThemeData(HTHEME hTheme)
GLenum const GLfloat * params
GLubyte GLubyte GLubyte GLubyte w
GLfloat GLfloat GLfloat GLfloat h
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
#define COM_INTERFACE_ENTRY_IID(iid, x)
#define DECLARE_PROTECT_FINAL_CONSTRUCT()
#define DECLARE_NOT_AGGREGATABLE(x)
#define MESSAGE_HANDLER(msg, func)
#define NOTIFY_CODE_HANDLER(cd, func)
#define BEGIN_MSG_MAP(theClass)
#define DECLARE_WND_CLASS_EX(WndClassName, style, bkgnd)
static VOID SetFont(PMAP infoPtr, LPWSTR lpFontName)
#define SetWindowStyle(hwnd, val)
static DWORD *static HFONT(WINAPI *pCreateFontIndirectExA)(const ENUMLOGFONTEXDVA *)
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
static HTHEME(WINAPI *pOpenThemeDataEx)(HWND
unsigned __int3264 UINT_PTR
HMONITOR WINAPI MonitorFromPoint(POINT, DWORD)
HMONITOR WINAPI MonitorFromRect(LPCRECT, DWORD)
HMONITOR WINAPI MonitorFromWindow(HWND, DWORD)
VOID ShowCustomizeNotifyIcons(HINSTANCE hInst, HWND hExplorer)
#define UNREFERENCED_PARAMETER(P)
const GUID IID_IOleWindow
#define BUTTON_IMAGELIST_ALIGN_LEFT
struct tagNMRBAUTOSIZE * LPNMRBAUTOSIZE
#define RFF_CALCDIRECTORY
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
#define ABN_WINDOWARRANGE
BOOL WINAPI SHFindFiles(PCIDLIST_ABSOLUTE pidlFolder, PCIDLIST_ABSOLUTE pidlSaveFile)
HINSTANCE WINAPI ShellExecuteW(HWND hwnd, LPCWSTR lpVerb, LPCWSTR lpFile, LPCWSTR lpParameters, LPCWSTR lpDirectory, INT nShowCmd)
#define SHGetSpecialFolderPath
#define CSIDL_COMMON_STARTMENU
#define MM_SUBMENUSHAVEIDS
DWORD WINAPI SHRestricted(RESTRICTIONS rest)
PULONG MinorVersion OPTIONAL
CSimpleArray< MINWNDPOS > * pMinimizedAll
#define AUTOHIDE_DELAY_HIDE
const GUID IID_IShellDesktopTray
static BOOL CALLBACK BackupWindowsPosProc(HWND hwnd, LPARAM lParam)
CSimpleArray< WINDOWPOSBACKUPDATA > g_WindowPosBackup
#define AUTOHIDE_SPEED_HIDE
#define WM_APP_TRAYDESTROY
CSimpleArray< MINWNDPOS > g_MinimizedAll
LRESULT appbar_message(COPYDATASTRUCT *cds)
#define AUTOHIDE_SPEED_SHOW
void appbar_notify_all(HMONITOR hMon, UINT uMsg, HWND hwndExclude, LPARAM lParam)
HRESULT Tray_OnStartMenuDismissed(ITrayWindow *Tray)
HRESULT CreateTrayWindow(ITrayWindow **ppTray)
BOOL CanBeMinimized(HWND hwnd)
#define TIMER_IGNOREPULSERESET_TIMEOUT
static BOOL IsThereAnyEffectiveWindow(BOOL bMustBeInMonitor)
#define IDHK_MINIMIZE_ALL
#define IDHK_SYS_PROPERTIES
#define TIMER_ID_AUTOHIDE
static BOOL CALLBACK FindEffectiveProc(HWND hwnd, LPARAM lParam)
#define AUTOHIDE_INTERVAL_ANIMATING
static const WCHAR szTrayWndClass[]
#define TIMER_ID_MOUSETRACK
#define IDHK_FIND_COMPUTER
#define TIMER_ID_IGNOREPULSERESET
#define AUTOHIDE_DELAY_SHOW
#define MOUSETRACK_INTERVAL
HRESULT TrayWindowCtxMenuCreator(ITrayWindow *TrayWnd, IN HWND hWndOwner, IContextMenu **ppCtxMenu)
TW_UINT32 TW_UINT16 TW_UINT16 MSG
#define TRAYCMD_CONTROL_PANEL
#define TRAYCMD_STARTMENU
#define TRAYCMD_LOCK_DESKTOP
#define TRAYCMD_DATE_AND_TIME
#define TRAYCMD_SEARCH_COMPUTERS
#define TRAYCMD_TASKBAR_PROPERTIES
#define TRAYCMD_SHOW_DESKTOP
#define TWM_DOEXITWINDOWS
#define TRAYCMD_LOCK_TASKBAR
#define TRAYCMD_SEARCH_FILES
#define TRAYCMD_CUSTOMIZE_TASKBAR
#define TRAYCMD_TOGGLE_DESKTOP
#define WM_PROGMAN_SAVESTATE
#define TRAYCMD_RUN_DIALOG
#define TABDMC_LOADINPROC
#define TRAYCMD_LOGOFF_DIALOG
#define TRAYCMD_SHOW_TASK_MGR
#define TRAYCMD_RESTORE_ALL
#define TRAYCMD_SHUTDOWN_DIALOG
#define TRAYCMD_PRINTERS_AND_FAXES
#define TRAYCMD_MINIMIZE_ALL
#define TRAYCMD_SWITCH_USER_DIALOG
#define TRAYCMD_HELP_AND_SUPPORT
HRESULT WINAPI SetWindowTheme(_In_ HWND hwnd, _In_ LPCWSTR pszSubAppName, _In_ LPCWSTR pszSubIdList)
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
BOOL WINAPI IsHungAppWindow(HWND hwnd)
DWORD WINAPI GetLastError(void)
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
#define SubclassWindow(hwnd, lpfn)
HGDIOBJ WINAPI GetStockObject(_In_ int)
int WINAPI SetBkMode(_In_ HDC, _In_ int)
HRGN WINAPI CreateRectRgnIndirect(_In_ LPCRECT)
#define CreateFontIndirect
HWND WINAPI ChildWindowFromPoint(_In_ HWND, _In_ POINT)
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
HMENU WINAPI CreatePopupMenu(void)
BOOL WINAPI RedrawWindow(_In_opt_ HWND, _In_opt_ LPCRECT, _In_opt_ HRGN, _In_ UINT)
#define GetWindowLongPtrW
#define LR_LOADTRANSPARENT
BOOL WINAPI TranslateMessage(_In_ const MSG *)
#define WM_WINDOWPOSCHANGING
BOOL WINAPI GetWindowPlacement(_In_ HWND, _Inout_ WINDOWPLACEMENT *)
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
BOOL WINAPI GetWindowInfo(_In_ HWND, _Inout_ PWINDOWINFO)
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
BOOL WINAPI SetWindowPos(_In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
struct tagWINDOWINFO WINDOWINFO
__analysis_noreturn void WINAPI PostQuitMessage(_In_ int)
WORD WINAPI CascadeWindows(_In_opt_ HWND hwndParent, _In_ UINT wHow, _In_opt_ CONST RECT *lpRect, _In_ UINT cKids, _In_reads_opt_(cKids) const HWND FAR *lpKids)
int WINAPI SetWindowRgn(_In_ HWND, _In_opt_ HRGN, _In_ BOOL)
#define LR_CREATEDIBSECTION
BOOL WINAPI SetForegroundWindow(_In_ HWND)
BOOL WINAPI GetCursorPos(_Out_ LPPOINT)
BOOL WINAPI AdjustWindowRectEx(_Inout_ LPRECT, _In_ DWORD, _In_ BOOL, _In_ DWORD)
BOOL WINAPI SetMenuItemInfoW(_In_ HMENU, _In_ UINT, _In_ BOOL, _In_ LPCMENUITEMINFOW)
BOOL WINAPI DeleteMenu(_In_ HMENU, _In_ UINT, _In_ UINT)
HMENU WINAPI GetSystemMenu(_In_ HWND, _In_ BOOL)
BOOL WINAPI EndDeferWindowPos(_In_ HDWP)
#define WM_SYSCOLORCHANGE
BOOL WINAPI TrackPopupMenuEx(_In_ HMENU, _In_ UINT, _In_ int, _In_ int, _In_ HWND, _In_opt_ LPTPMPARAMS)
HWND WINAPI ChildWindowFromPointEx(_In_ HWND, _In_ POINT, _In_ UINT)
int WINAPI MapWindowPoints(_In_opt_ HWND hWndFrom, _In_opt_ HWND hWndTo, _Inout_updates_(cPoints) LPPOINT lpPoints, _In_ UINT cPoints)
#define WM_NCLBUTTONDBLCLK
BOOL WINAPI IsIconic(_In_ HWND)
UINT_PTR WINAPI SetTimer(_In_opt_ HWND, _In_ UINT_PTR, _In_ UINT, _In_opt_ TIMERPROC)
DWORD WINAPI CheckMenuItem(_In_ HMENU, _In_ UINT, _In_ UINT)
HWND WINAPI GetDesktopWindow(void)
BOOL WINAPI ShowWindowAsync(_In_ HWND, _In_ int)
BOOL WINAPI PtInRect(_In_ LPCRECT, _In_ POINT)
WORD WINAPI TileWindows(_In_opt_ HWND hwndParent, _In_ UINT wHow, _In_opt_ CONST RECT *lpRect, _In_ UINT cKids, _In_reads_opt_(cKids) const HWND FAR *lpKids)
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
BOOL WINAPI RegisterHotKey(_In_opt_ HWND, _In_ int, _In_ UINT, _In_ UINT)
BOOL WINAPI EnumWindows(_In_ WNDENUMPROC lpEnumFunc, _In_ LPARAM lParam)
BOOL WINAPI IsChild(_In_ HWND, _In_ HWND)
BOOL WINAPI IntersectRect(_Out_ LPRECT, _In_ LPCRECT, _In_ LPCRECT)
BOOL WINAPI SystemParametersInfoW(_In_ UINT uiAction, _In_ UINT uiParam, _Inout_opt_ PVOID pvParam, _In_ UINT fWinIni)
BOOL WINAPI IsWindowEnabled(_In_ HWND)
#define MAKEINTRESOURCEA(i)
#define CWP_SKIPINVISIBLE
BOOL WINAPI DestroyMenu(_In_ HMENU)
BOOL WINAPI GetMenuItemInfoW(_In_ HMENU, _In_ UINT, _In_ BOOL, _Inout_ LPMENUITEMINFOW)
int WINAPI GetClassNameW(_In_ HWND hWnd, _Out_writes_to_(nMaxCount, return) LPWSTR lpClassName, _In_ int nMaxCount)
#define MDITILE_SKIPDISABLED
#define SWP_NOOWNERZORDER
BOOL WINAPI OffsetRect(_Inout_ LPRECT, _In_ int, _In_ int)
HDWP WINAPI DeferWindowPos(_In_ HDWP, _In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
#define MDITILE_HORIZONTAL
BOOL WINAPI GetMonitorInfoW(_In_ HMONITOR, _Inout_ LPMONITORINFO)
HWND WINAPI FindWindowW(_In_opt_ LPCWSTR, _In_opt_ LPCWSTR)
#define MAKEINTRESOURCEW(i)
HBITMAP WINAPI LoadBitmapW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
BOOL WINAPI KillTimer(_In_opt_ HWND, _In_ UINT_PTR)
BOOL WINAPI InflateRect(_Inout_ LPRECT, _In_ int, _In_ int)
#define RDW_INTERNALPAINT
BOOL WINAPI SetWindowPlacement(_In_ HWND hWnd, _In_ const WINDOWPLACEMENT *)
#define SWP_NOSENDCHANGING
BOOL WINAPI IsWindowVisible(_In_ HWND)
BOOL WINAPI EnableMenuItem(_In_ HMENU, _In_ UINT, _In_ UINT)
BOOL WINAPI EqualRect(_In_ LPCRECT, _In_ LPCRECT)
int WINAPI GetSystemMetrics(_In_ int)
#define SW_SHOWMINNOACTIVE
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
SHORT WINAPI GetKeyState(_In_ int)
HDWP WINAPI BeginDeferWindowPos(_In_ int)
_Must_inspect_result_ _In_ ULONG Flags
#define IID_PPV_ARG(Itype, ppType)