10#include <commoncontrols.h>
15#define WM_APP_TRAYDESTROY (WM_APP + 0x100)
17#define TIMER_ID_AUTOHIDE 1
18#define TIMER_ID_MOUSETRACK 2
19#define MOUSETRACK_INTERVAL 100
20#define AUTOHIDE_DELAY_HIDE 2000
21#define AUTOHIDE_DELAY_SHOW 50
22#define AUTOHIDE_INTERVAL_ANIMATING 10
24#define AUTOHIDE_SPEED_SHOW 10
25#define AUTOHIDE_SPEED_HIDE 1
27#define AUTOHIDE_HIDDEN 0
28#define AUTOHIDE_SHOWING 1
29#define AUTOHIDE_SHOWN 2
30#define AUTOHIDE_HIDING 3
33#define IDHK_MINIMIZE_ALL 0x1f5
34#define IDHK_RESTORE_ALL 0x1f6
35#define IDHK_HELP 0x1f7
36#define IDHK_EXPLORE 0x1f8
37#define IDHK_FIND 0x1f9
38#define IDHK_FIND_COMPUTER 0x1fa
39#define IDHK_NEXT_TASK 0x1fb
40#define IDHK_PREV_TASK 0x1fc
41#define IDHK_SYS_PROPERTIES 0x1fd
42#define IDHK_DESKTOP 0x1fe
43#define IDHK_PAGER 0x1ff
135 RECT rcWindow, rcMonitor, rcIntersect;
136 rcMonitor =
info.rcMonitor;
176const GUID IID_IShellDesktopTray = { 0x213e2df9, 0x9a14, 0x4328, { 0x99, 0xb1, 0x69, 0x61, 0xf9, 0x14, 0x3c, 0xe9 } };
227 NONCLIENTMETRICS ncm = {
sizeof(ncm)};
234 ncm.lfCaptionFont.lfWeight =
FW_BOLD;
262 WCHAR szStartCaption[32];
268 wcscpy(szStartCaption,
L"Start");
309 public CWindowImpl < CTrayWindow, CWindow, CControlWinTraits >,
312 public IShellDesktopTray,
430 WCHAR szCommand[256];
431 WCHAR *pszParameters;
441 pszParameters =
wcschr(szCommand,
L'>');
506 CStringW strDefaultDir, strHomePath;
509 strDefaultDir += strHomePath;
522 return This->RunFileDlgThread();
531 if (hRunDlg !=
NULL &&
575 return This->TrayPropertiesThread();
585 if (hTrayProp !=
NULL &&
718 TRACE(
"ITrayWindow::ExecContextMenuCmd(%u): Unhandled Command ID!\n", uiCmd);
876 if (hwndExclude !=
NULL)
923 fuFlags |= (TrackUp ? TPM_VERNEGANIMATION : TPM_VERPOSANIMATION);
963 TRACE(
"Before Query\n");
964 hr = contextMenu->QueryContextMenu(popup, 0, 0,
UINT_MAX, CMF_NORMAL);
967 TRACE(
"Query failed\n");
972 TRACE(
"Before Tracking\n");
990 TRACE(
"Before InvokeCommand\n");
995 hr = contextMenu->InvokeCommand(&cmi);
999 TRACE(
"TrackPopupMenu failed. Code=%d, LastError=%d\n", uCommand,
GetLastError());
1023 NONCLIENTMETRICS ncm = {
sizeof(ncm)};
1026 ERR(
"SPI_GETNONCLIENTMETRICS failed\n");
1037 ERR(
"CreateFontIndirect failed\n");
1088 pt.x = pRect->left + ((pRect->right - pRect->left) / 2);
1089 pt.y = pRect->top + ((pRect->bottom - pRect->top) / 2);
1104 if (hMonitor !=
NULL)
1118 goto GetPrimaryRect;
1166 IN const SIZE *pTraySize,
1172 pRect->right = pRect->left + pTraySize->cx;
1176 pRect->bottom = pRect->top + pTraySize->cy;
1180 pRect->left = pRect->right - pTraySize->cx;
1185 pRect->top = pRect->bottom - pTraySize->cy;
1195 if (pTraySize ==
NULL)
1227 szWnd.
cx = pRect->right - pRect->left;
1228 szWnd.
cy = pRect->bottom - pRect->top;
1233 MONITOR_DEFAULTTONEAREST);
1239 if (szWnd.
cx > szMax.
cx)
1240 szWnd.
cx = szMax.
cx;
1241 if (szWnd.
cy > szMax.
cy)
1242 szWnd.
cy = szMax.
cy;
1256 GetMinimumWindowSize(
1280 SIZE DeltaPt, ScreenOffset;
1296 goto GetPrimaryScreenRect;
1311GetPrimaryScreenRect:
1312 ScreenOffset.
cx = 0;
1313 ScreenOffset.
cy = 0;
1319 if (
pt.x < rcScreen.
right / 2)
1351 if (hMon != hMonNew)
1384 pt.x = pRect->left + ((pRect->right - pRect->left) / 2);
1385 pt.y = pRect->top + ((pRect->bottom - pRect->top) / 2);
1399 rcTray.
left = pwp->x;
1400 rcTray.
top = pwp->y;
1434 rcTray.
left = pwp->x;
1435 rcTray.
top = pwp->y;
1480 pwp->x = rcTray.
left;
1481 pwp->y = rcTray.
top;
1489 RECT rcClip, rcWindow;
1527 RECT rcTray, rcWorkArea;
1602 SIZE WndSize, EdgeSize, DlgFrameSize;
1642 WndSize.
cx = 2 * (EdgeSize.
cx + DlgFrameSize.
cx);
1643 WndSize.
cy = StartBtnSize.
cy + (2 * (EdgeSize.
cy + DlgFrameSize.
cy));
1647 WndSize.
cx = StartBtnSize.
cx;
1648 WndSize.
cy = StartBtnSize.
cy - EdgeSize.
cy;
1679 SIZE TraySize, StartSize;
1680 POINT ptTrayNotify = { 0, 0 };
1685 if (prcClient !=
NULL)
1687 rcClient = *prcClient;
1711 if (StartSize.
cx > rcClient.
right)
1712 StartSize.
cx = rcClient.
right;
1715 if (hwndTaskToolbar)
1735 ERR(
"DeferWindowPos for start button failed. lastErr=%d\n",
GetLastError());
1760 ptTrayNotify.
x = rcClient.
right - TraySize.
cx;
1762 ptTrayNotify.
y = rcClient.
bottom - TraySize.
cy;
1774 ERR(
"DeferWindowPos for notification area failed. lastErr=%d\n",
GetLastError());
1782 POINT ptRebar = { 0, 0 };
1790 szRebar.
cx = ptTrayNotify.
x - ptRebar.
x;
1797 szRebar.
cy = ptTrayNotify.
y - ptRebar.
y;
1823 RECT rebarRect, taskbarRect, clientRect;
1840 pRect->
bottom = pRect->
top + rebarRect.bottom - rebarRect.top +
margins.cy;
1843 rebarRect.top = rebarRect.bottom - (pRect->
bottom - pRect->
top -
margins.cy);
1845 pRect->
top = pRect->
bottom - (rebarRect.bottom - rebarRect.top +
margins.cy);
1848 rebarRect.right = rebarRect.left + (pRect->
right - pRect->
left -
margins.cx);
1850 pRect->
right = pRect->
left + (rebarRect.right - rebarRect.left +
margins.cx);
1853 rebarRect.left = rebarRect.right - (pRect->
right - pRect->
left -
margins.cx);
1855 pRect->
left = pRect->
right - (rebarRect.right - rebarRect.left +
margins.cx);
1876 pt.y = rcExclude.
top;
1886 pt.y = rcExclude.
top;
1891 pt.y = rcExclude.
top;
1923 TRACE(
"AutoHide cancelling hide.\n");
1929 TRACE(
"AutoHide starting show.\n");
1938 TRACE(
"AutoHide cancelling show.\n");
1944 TRACE(
"AutoHide starting hide.\n");
2227 RECT rcGripper = {0};
2318 ((ITrayWindow*)
this)->
AddRef();
2382 static const UINT winkeys[] =
2409#define TIMER_ID_IGNOREPULSERESET 888
2410#define TIMER_IGNOREPULSERESET_TIMEOUT 200
2447 if (
wParam == SPI_SETNONCLIENTMETRICS)
2470 FIXME(
"Use UpdateStartMenu\n");
2513 switch (pCopyData->
dwData)
2601 if (
pt.x < rcClient.
left)
2606 if (
pt.y < rcClient.
top)
2674 rcClient.
left = rcClient.
top = 0;
2718 static const UINT uidDisableItem [] = {
2732 if (hSysMenu !=
NULL)
2773 if (!ppt || !prcStartBtn || !pwi)
2781 if (ppt->
x > prcStartBtn->
right || ppt->
y > prcStartBtn->
bottom)
2787 if (ppt->
x < prcStartBtn->
left || ppt->
y > prcStartBtn->
bottom)
2791 ppt->
x > prcStartBtn->
right)
2799 if (ppt->
x > prcStartBtn->
right || ppt->
y < prcStartBtn->
top)
2816 if (!ppt || !prcShowDesktopBtn)
2823 return !(ppt->
x > prcShowDesktopBtn->
right || ppt->
y < prcShowDesktopBtn->
top);
2825 return !(ppt->
x < prcShowDesktopBtn->
left || ppt->
y > prcShowDesktopBtn->
bottom);
2827 return !(ppt->
x < prcShowDesktopBtn->
left || ppt->
y < prcShowDesktopBtn->
top);
2829 return !(ppt->
x < prcShowDesktopBtn->
left || ppt->
y < prcShowDesktopBtn->
top);
2885 if (
pt.x != -1 ||
pt.y != -1)
2907 POINT ptClient = *ppt;
2913 if (hWndAtPt !=
NULL &&
2922 goto HandleTrayContextMenu;
2928 goto HandleTrayContextMenu;
2932HandleTrayContextMenu:
3069 ::SetForegroundWindow(hwndActive);
3102 return wcscmp(szClass,
L"#32770") == 0;
3111 if (!
info->bShowDesktop)
3126 info->pMinimizedAll->Add(mwp);
3143 info.bShowDesktop = bShowDesktop;
3247 rc = &prms->
rgrc[0];
3313 szWindow.
cx - szTarget.
cx,
3314 szWindow.
cy - szTarget.
cx,
3320 szWindow.
cx = szActual.
cx + borders.
cx;
3323 szWindow.
cy = szActual.
cy + borders.
cy;
3326 szWindow.
cx = szActual.
cx + borders.
cx;
3330 szWindow.
cy = szActual.
cy + borders.
cy;
3480 if (!Ret || Ret == -1)
3506 TRACE(
"IShellDesktopTray::GetState() unimplemented!\n");
3513 TRACE(
"IShellDesktopTray::GetTrayWindow(0x%p)\n", phWndTray);
3521 TRACE(
"IShellDesktopTray::RegisterDesktopWindow(0x%p)\n", hWndDesktop);
3530 TRACE(
"IShellDesktopTray::Unknown(%u,%u) unimplemented!\n", dwUnknown1, dwUnknown2);
3606 this->m_idCmdCmFirst = 0;
3662 WARN(
"AddContextMenus failed.\n");
3683 cmici.
cbSize =
sizeof(cmici);
3688 pcm->InvokeCommand(&cmici);
3693 TrayWnd->ExecContextMenuCmd(uiCmdId);
3741 *ppTray = (ITrayWindow *) Tray;
std::map< E_MODULE, HMODULE > mod
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)
void OnAppBarNotifyAll(_In_opt_ HMONITOR hMon, _In_opt_ HWND hwndIgnore, _In_ DWORD dwNotify, _In_opt_ LPARAM lParam)
void RecomputeAllWorkareas()
LRESULT OnAppBarMessage(_Inout_ PCOPYDATASTRUCT pCopyData)
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)
BOOL IsHidingState() const override
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)
const RECT * GetTrayRect() override
BOOL STDMETHODCALLTYPE IsHorizontal()
TRACKMOUSEEVENT m_MouseTrackingInfo
HMONITOR GetPreviousMonitor() const override
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()
INT GetPosition() const override
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)
BOOL IsAutoHideState() const override
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)
HWND GetDesktopWnd() const override
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
HMONITOR GetMonitor() const override
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
@ REST_CLEARRECENTDOCSONEXIT
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
VOID TrayProcessMessages(ITrayWindow *Tray)
#define AUTOHIDE_SPEED_HIDE
#define WM_APP_TRAYDESTROY
CSimpleArray< MINWNDPOS > g_MinimizedAll
VOID TrayMessageLoop(ITrayWindow *Tray)
#define AUTOHIDE_SPEED_SHOW
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
#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
struct tagCOPYDATASTRUCT * PCOPYDATASTRUCT
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)