ReactOS  0.4.15-dev-3428-g0609db5
CTrayWindow Class Reference
Inheritance diagram for CTrayWindow:
Collaboration diagram for CTrayWindow:

Classes

struct  MINIMIZE_INFO
 

Public Member Functions

 CTrayWindow ()
 
virtual ~CTrayWindow ()
 
HRESULT ExecResourceCmd (int id)
 
LRESULT DoExitWindows ()
 
DWORD WINAPI RunFileDlgThread ()
 
void DisplayRunFileDlg ()
 
DWORD WINAPI TrayPropertiesThread ()
 
HWND STDMETHODCALLTYPE DisplayProperties ()
 
VOID OpenCommonStartMenuDirectory (IN HWND hWndOwner, IN LPCTSTR lpOperation)
 
VOID OpenTaskManager (IN HWND hWndOwner)
 
VOID ToggleDesktop ()
 
BOOL STDMETHODCALLTYPE ExecContextMenuCmd (IN UINT uiCmd)
 
LRESULT HandleHotKey (DWORD id)
 
LRESULT HandleCommand (UINT uCommand)
 
UINT TrackMenu (IN HMENU hMenu, IN POINT *ppt OPTIONAL, IN HWND hwndExclude OPTIONAL, IN BOOL TrackUp, IN BOOL IsContextMenu)
 
HRESULT TrackCtxMenu (IN IContextMenu *contextMenu, IN POINT *ppt OPTIONAL, IN HWND hwndExclude OPTIONAL, IN BOOL TrackUp, IN PVOID Context OPTIONAL)
 
void UpdateFonts ()
 
HMONITOR GetScreenRectFromRect (IN OUT RECT *pRect, IN DWORD dwFlags)
 
HMONITOR GetMonitorFromRect (IN const RECT *pRect)
 
HMONITOR GetScreenRect (IN HMONITOR hMonitor, IN OUT RECT *pRect)
 
VOID AdjustSizerRect (RECT *rc, DWORD pos)
 
VOID MakeTrayRectWithSize (IN DWORD Position, IN const SIZE *pTraySize, IN OUT RECT *pRect)
 
VOID GetTrayRectFromScreenRect (IN DWORD Position, IN const RECT *pScreen, IN const SIZE *pTraySize OPTIONAL, OUT RECT *pRect)
 
BOOL IsPosHorizontal ()
 
HMONITOR CalculateValidSize (IN DWORD Position, IN OUT RECT *pRect)
 
DWORD GetDraggingRectFromPt (IN POINT pt, OUT RECT *pRect, OUT HMONITOR *phMonitor)
 
DWORD GetDraggingRectFromRect (IN OUT RECT *pRect, OUT HMONITOR *phMonitor)
 
VOID ChangingWinPos (IN OUT LPWINDOWPOS pwp)
 
VOID ApplyClipping (IN BOOL Clip)
 
VOID ResizeWorkArea ()
 
VOID CheckTrayWndPosition ()
 
VOID RegLoadSettings ()
 
VOID AlignControls (IN PRECT prcClient OPTIONAL)
 
void FitToRebar (PRECT pRect)
 
void PopupStartMenu ()
 
void ProcessMouseTracking ()
 
void ProcessAutoHide ()
 
LRESULT EraseBackgroundWithTheme (HDC hdc)
 
int DrawSizerWithTheme (IN HRGN hRgn)
 
HRESULT STDMETHODCALLTYPE Open ()
 
HRESULT STDMETHODCALLTYPE Close ()
 
HWND STDMETHODCALLTYPE GetHWND ()
 
BOOL STDMETHODCALLTYPE IsSpecialHWND (IN HWND hWnd)
 
BOOL STDMETHODCALLTYPE IsHorizontal ()
 
BOOL STDMETHODCALLTYPE Lock (IN BOOL bLock)
 
HRESULT STDMETHODCALLTYPE QueryContextMenu (HMENU hPopup, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags)
 
HRESULT STDMETHODCALLTYPE InvokeCommand (LPCMINVOKECOMMANDINFO lpici)
 
HRESULT STDMETHODCALLTYPE GetCommandString (UINT_PTR idCmd, UINT uType, UINT *pwReserved, LPSTR pszName, UINT cchMax)
 
LRESULT OnCreate (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnThemeChanged (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnSettingChanged (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnEraseBackground (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnDisplayChange (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnCopyData (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnNcPaint (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnCtlColorBtn (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnNcHitTest (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnMoving (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnSizing (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnWindowPosChanging (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnSize (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnEnterSizeMove (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnExitSizeMove (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnSysChar (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnNcLButtonDown (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnNcRButtonUp (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnContextMenu (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnNotify (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnNcLButtonDblClick (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnAppTrayDestroy (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnOpenStartMenu (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnDoExitWindows (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnSysCommand (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnGetTaskSwitch (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnHotkey (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
VOID MinimizeAll (BOOL bShowDesktop=FALSE)
 
VOID ShowDesktop ()
 
VOID RestoreAll ()
 
LRESULT OnCommand (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnMouseMove (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnTimer (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnNcCalcSize (INT code, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnInitMenuPopup (INT code, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnRebarAutoSize (INT code, LPNMHDR nmhdr, BOOL &bHandled)
 
LRESULT OnTaskbarSettingsChanged (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
 if (m_StartMenuBand !=NULL)
 
 NOTIFY_CODE_HANDLER (RBN_AUTOSIZE, OnRebarAutoSize) VOID TrayProcessMessages()
 
VOID TrayMessageLoop ()
 
virtual ULONG STDMETHODCALLTYPE GetState ()
 
virtual HRESULT STDMETHODCALLTYPE GetTrayWindow (OUT HWND *phWndTray)
 
virtual HRESULT STDMETHODCALLTYPE RegisterDesktopWindow (IN HWND hWndDesktop)
 
virtual HRESULT STDMETHODCALLTYPE Unknown (IN DWORD dwUnknown1, IN DWORD dwUnknown2)
 
virtual HRESULT RaiseStartButton ()
 
HRESULT WINAPI GetWindow (HWND *phwnd)
 
HRESULT WINAPI ContextSensitiveHelp (BOOL fEnterMode)
 
void _Init ()
 
- Public Member Functions inherited from ATL::CComObjectRootEx< CComMultiThreadModelNoCS >
 ~CComObjectRootEx ()
 
ULONG InternalAddRef ()
 
ULONG InternalRelease ()
 
void Lock ()
 
void Unlock ()
 
HRESULT _AtlInitialConstruct ()
 
- Public Member Functions inherited from ATL::CComObjectRootBase
 CComObjectRootBase ()
 
 ~CComObjectRootBase ()
 
void SetVoid (void *)
 
HRESULT _AtlFinalConstruct ()
 
HRESULT FinalConstruct ()
 
void InternalFinalConstructAddRef ()
 
void InternalFinalConstructRelease ()
 
void FinalRelease ()
 
- Public Member Functions inherited from ATL::CWindowImpl< CTrayWindow, CWindow, CControlWinTraits >
HWND Create (HWND hWndParent, _U_RECT rect=NULL, LPCTSTR szWindowName=NULL, DWORD dwStyle=0, DWORD dwExStyle=0, _U_MENUorID MenuOrID=0U, LPVOID lpCreateParam=NULL)
 
- Public Member Functions inherited from ATL::CWindowImplBaseT< CWindow, CControlWinTraits >
 CWindowImplBaseT ()
 
virtual void OnFinalMessage (HWND)
 
BOOL SubclassWindow (HWND hWnd)
 
HWND UnsubclassWindow (BOOL bForce=FALSE)
 
virtual WNDPROC GetWindowProc ()
 
LRESULT DefWindowProc (UINT uMsg, WPARAM wParam, LPARAM lParam)
 
HWND Create (HWND hWndParent, _U_RECT rect, LPCTSTR szWindowName, DWORD dwStyle, DWORD dwExStyle, _U_MENUorID MenuOrID, ATOM atom, LPVOID lpCreateParam)
 
- Public Member Functions inherited from ATL::CWindowImplRoot< CWindow >
 CWindowImplRoot ()
 
virtual ~CWindowImplRoot ()
 
- Public Member Functions inherited from ATL::CWindow
 CWindow (HWND hWnd=NULL)
 
 operator HWND () const
 
UINT ArrangeIconicWindows ()
 
void Attach (HWND hWndNew)
 
HDC BeginPaint (LPPAINTSTRUCT lpPaint)
 
BOOL BringWindowToTop ()
 
BOOL CenterWindow (HWND hWndCenter=NULL)
 
BOOL ChangeClipboardChain (HWND hWndNewNext)
 
BOOL CheckDlgButton (int nIDButton, UINT nCheck)
 
BOOL CheckRadioButton (int nIDFirstButton, int nIDLastButton, int nIDCheckButton)
 
HWND ChildWindowFromPoint (POINT point) const
 
HWND ChildWindowFromPointEx (POINT point, UINT uFlags) const
 
BOOL ClientToScreen (LPPOINT lpPoint) const
 
BOOL ClientToScreen (LPRECT lpRect) const
 
HWND Create (LPCTSTR lpstrWndClass, HWND hWndParent, _U_RECT rect=NULL, LPCTSTR szWindowName=NULL, DWORD dwStyle=0, DWORD dwExStyle=0, _U_MENUorID MenuOrID=0U, LPVOID lpCreateParam=NULL)
 
BOOL CreateCaret (HBITMAP pBitmap)
 
BOOL CreateGrayCaret (int nWidth, int nHeight)
 
BOOL CreateSolidCaret (int nWidth, int nHeight)
 
HDWP DeferWindowPos (HDWP hWinPosInfo, HWND hWndInsertAfter, int x, int y, int cx, int cy, UINT uFlags)
 
BOOL DestroyWindow ()
 
HWND Detach ()
 
int DlgDirList (LPTSTR lpPathSpec, int nIDListBox, int nIDStaticPath, UINT nFileType)
 
int DlgDirListComboBox (LPTSTR lpPathSpec, int nIDComboBox, int nIDStaticPath, UINT nFileType)
 
BOOL DlgDirSelect (LPTSTR lpString, int nCount, int nIDListBox)
 
BOOL DlgDirSelectComboBox (LPTSTR lpString, int nCount, int nIDComboBox)
 
void DragAcceptFiles (BOOL bAccept=TRUE)
 
BOOL DrawMenuBar ()
 
BOOL EnableScrollBar (UINT uSBFlags, UINT uArrowFlags=ESB_ENABLE_BOTH)
 
BOOL EnableWindow (BOOL bEnable=TRUE)
 
void EndPaint (LPPAINTSTRUCT lpPaint)
 
BOOL FlashWindow (BOOL bInvert)
 
BOOL GetClientRect (LPRECT lpRect) const
 
HDC GetDC ()
 
HDC GetDCEx (HRGN hRgnClip, DWORD flags)
 
HWND GetDescendantWindow (int nID) const
 
HRESULT GetDlgControl (int nID, REFIID iid, void **ppCtrl)
 
int GetDlgCtrlID () const
 
HRESULT GetDlgHost (int nID, REFIID iid, void **ppHost)
 
HWND GetDlgItem (int nID)
 
UINT GetDlgItemInt (int nID, BOOL *lpTrans=NULL, BOOL bSigned=TRUE) const
 
UINT GetDlgItemText (int nID, LPTSTR lpStr, int nMaxCount) const
 
BOOL GetDlgItemText (int nID, BSTR &bstrText) const
 
DWORD GetExStyle () const
 
HFONT GetFont () const
 
DWORD GetHotKey () const
 
HICON GetIcon (BOOL bBigIcon=TRUE) const
 
HWND GetLastActivePopup () const
 
HMENU GetMenu () const
 
HWND GetNextDlgGroupItem (HWND hWndCtl, BOOL bPrevious=FALSE) const
 
HWND GetNextDlgTabItem (HWND hWndCtl, BOOL bPrevious=FALSE) const
 
CWindow GetParent () const
 
BOOL GetScrollInfo (int nBar, LPSCROLLINFO lpScrollInfo)
 
BOOL GetScrollPos (int nBar)
 
BOOL GetScrollRange (int nBar, LPINT lpMinPos, LPINT lpMaxPos) const
 
DWORD GetStyle () const
 
HMENU GetSystemMenu (BOOL bRevert)
 
HWND GetTopLevelParent () const
 
HWND GetTopLevelWindow () const
 
HWND GetTopWindow () const
 
BOOL GetUpdateRect (LPRECT lpRect, BOOL bErase=FALSE)
 
int GetUpdateRgn (HRGN hRgn, BOOL bErase=FALSE)
 
HWND GetWindow (UINT nCmd) const
 
DWORD GetWindowContextHelpId () const
 
HDC GetWindowDC ()
 
LONG GetWindowLong (int nIndex) const
 
LONG_PTR GetWindowLongPtr (int nIndex) const
 
BOOL GetWindowPlacement (WINDOWPLACEMENT *lpwndpl) const
 
DWORD GetWindowProcessID ()
 
BOOL GetWindowRect (LPRECT lpRect) const
 
int GetWindowRgn (HRGN hRgn)
 
int GetWindowText (LPTSTR lpszStringBuf, int nMaxCount) const
 
BOOL GetWindowText (BSTR &bstrText)
 
int GetWindowTextLength () const
 
DWORD GetWindowThreadID ()
 
WORD GetWindowWord (int nIndex) const
 
void GotoDlgCtrl (HWND hWndCtrl) const
 
BOOL HideCaret ()
 
BOOL HiliteMenuItem (HMENU hMenu, UINT uHiliteItem, UINT uHilite)
 
BOOL Invalidate (BOOL bErase=TRUE)
 
BOOL InvalidateRect (LPCRECT lpRect, BOOL bErase=TRUE)
 
void InvalidateRgn (HRGN hRgn, BOOL bErase=TRUE)
 
BOOL IsChild (const HWND hWnd) const
 
BOOL IsDialogMessage (LPMSG lpMsg)
 
UINT IsDlgButtonChecked (int nIDButton) const
 
BOOL IsIconic () const
 
BOOL IsParentDialog ()
 
BOOL IsWindow () const
 
BOOL IsWindowEnabled () const
 
BOOL IsWindowVisible () const
 
BOOL IsWindowUnicode ()
 
BOOL IsZoomed () const
 
BOOL KillTimer (UINT_PTR nIDEvent)
 
BOOL LockWindowUpdate (BOOL bLock=TRUE)
 
int MapWindowPoints (HWND hWndTo, LPPOINT lpPoint, UINT nCount) const
 
int MapWindowPoints (HWND hWndTo, LPRECT lpRect) const
 
int MessageBox (LPCTSTR lpszText, LPCTSTR lpszCaption=NULL, UINT nType=MB_OK)
 
BOOL ModifyStyle (DWORD dwRemove, DWORD dwAdd, UINT nFlags=0)
 
BOOL ModifyStyleEx (DWORD dwRemove, DWORD dwAdd, UINT nFlags=0)
 
BOOL MoveWindow (int x, int y, int nWidth, int nHeight, BOOL bRepaint=TRUE)
 
void NextDlgCtrl () const
 
BOOL OpenClipboard ()
 
BOOL PostMessage (UINT message, WPARAM wParam=0, LPARAM lParam=0)
 
void PrevDlgCtrl () const
 
void Print (HDC hDC, DWORD dwFlags) const
 
void PrintClient (HDC hDC, DWORD dwFlags) const
 
BOOL RedrawWindow (LPCRECT lpRectUpdate=NULL, HRGN hRgnUpdate=NULL, UINT flags=RDW_INVALIDATE|RDW_UPDATENOW|RDW_ERASE)
 
int ReleaseDC (HDC hDC)
 
BOOL ResizeClient (int nWidth, int nHeight, BOOL bRedraw=FALSE)
 
BOOL ScreenToClient (LPPOINT lpPoint) const
 
BOOL ScrollWindow (int xAmount, int yAmount, LPCRECT lpRect=NULL, LPCRECT lpClipRect=NULL)
 
int ScrollWindowEx (int dx, int dy, LPCRECT lpRectScroll, LPCRECT lpRectClip, HRGN hRgnUpdate, LPRECT lpRectUpdate, UINT flags)
 
LRESULT SendDlgItemMessage (int nID, UINT message, WPARAM wParam=0, LPARAM lParam=0)
 
LRESULT SendMessage (UINT message, WPARAM wParam=0, LPARAM lParam=0)
 
void SendMessageToDescendants (UINT message, WPARAM wParam=0, LPARAM lParam=0, BOOL bDeep=TRUE)
 
BOOL SendNotifyMessage (UINT message, WPARAM wParam=0, LPARAM lParam=0)
 
HWND SetActiveWindow ()
 
HWND SetCapture ()
 
HWND SetClipboardViewer ()
 
int SetDlgCtrlID (int nID)
 
BOOL SetDlgItemInt (int nID, UINT nValue, BOOL bSigned=TRUE)
 
BOOL SetDlgItemText (int nID, LPCTSTR lpszString)
 
HWND SetFocus ()
 
void SetFont (HFONT hFont, BOOL bRedraw=TRUE)
 
int SetHotKey (WORD wVirtualKeyCode, WORD wModifiers)
 
HICON SetIcon (HICON hIcon, BOOL bBigIcon=TRUE)
 
BOOL SetMenu (HMENU hMenu)
 
HWND SetParent (HWND hWndNewParent)
 
void SetRedraw (BOOL bRedraw=TRUE)
 
int SetScrollInfo (int nBar, LPSCROLLINFO lpScrollInfo, BOOL bRedraw=TRUE)
 
int SetScrollPos (int nBar, int nPos, BOOL bRedraw=TRUE)
 
BOOL SetScrollRange (int nBar, int nMinPos, int nMaxPos, BOOL bRedraw=TRUE)
 
UINT_PTR SetTimer (UINT_PTR nIDEvent, UINT nElapse, void(CALLBACK *lpfnTimer)(HWND, UINT, UINT_PTR, DWORD)=NULL)
 
BOOL SetWindowContextHelpId (DWORD dwContextHelpId)
 
LONG SetWindowLong (int nIndex, LONG dwNewLong)
 
LONG_PTR SetWindowLongPtr (int nIndex, LONG_PTR dwNewLong)
 
BOOL SetWindowPlacement (const WINDOWPLACEMENT *lpwndpl)
 
BOOL SetWindowPos (HWND hWndInsertAfter, int x, int y, int cx, int cy, UINT nFlags)
 
int SetWindowRgn (HRGN hRgn, BOOL bRedraw=FALSE)
 
BOOL SetWindowText (LPCTSTR lpszString)
 
WORD SetWindowWord (int nIndex, WORD wNewWord)
 
BOOL ShowCaret ()
 
BOOL ShowOwnedPopups (BOOL bShow=TRUE)
 
BOOL ShowScrollBar (UINT nBar, BOOL bShow=TRUE)
 
BOOL ShowWindow (int nCmdShow)
 
BOOL ShowWindowAsync (int nCmdShow)
 
BOOL UpdateWindow ()
 
BOOL ValidateRect (LPCRECT lpRect)
 
BOOL ValidateRgn (HRGN hRgn)
 
BOOL WinHelp (LPCTSTR lpszHelp, UINT nCmd=HELP_CONTEXT, DWORD dwData=0)
 
- Public Member Functions inherited from ATL::CMessageMap
virtual BOOL ProcessWindowMessage (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT &lResult, DWORD dwMsgMapID)=0
 
- Public Member Functions inherited from IUnknown
HRESULT QueryInterface ([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
 
ULONG AddRef ()
 
ULONG Release ()
 

Static Public Member Functions

static DWORD WINAPI s_RunFileDlgThread (IN OUT PVOID pParam)
 
static DWORD WINAPI s_TrayPropertiesThread (IN OUT PVOID pParam)
 
static BOOL IsDialog (HWND hwnd)
 
static BOOL CALLBACK MinimizeWindowsProc (HWND hwnd, LPARAM lParam)
 
- Static Public Member Functions inherited from ATL::CComCoClass< CTrayWindow >
static LPCTSTR WINAPI GetObjectDescription ()
 
- Static Public Member Functions inherited from ATL::CComObjectRootBase
static void WINAPI ObjectMain (bool)
 
static const struct _ATL_CATMAP_ENTRYGetCategoryMap ()
 
static HRESULT WINAPI InternalQueryInterface (void *pThis, const _ATL_INTMAP_ENTRY *pEntries, REFIID iid, void **ppvObject)
 
- Static Public Member Functions inherited from ATL::CWindowImpl< CTrayWindow, CWindow, CControlWinTraits >
static LPCTSTR GetWndCaption ()
 
- Static Public Member Functions inherited from ATL::CWindowImplBaseT< CWindow, CControlWinTraits >
static DWORD GetWndStyle (DWORD dwStyle)
 
static DWORD GetWndExStyle (DWORD dwExStyle)
 
static LRESULT CALLBACK StartWindowProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
static LRESULT CALLBACK WindowProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
- Static Public Member Functions inherited from ATL::CWindow
static LPCTSTR GetWndClassName ()
 
static LRESULT SendMessage (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
 

Public Attributes

CComPtr< ITrayBandSite > m_TrayBandSite
 
union {
   DWORD   Flags
 
   struct {
      DWORD   InSizeMove: 1
 
      DWORD   IsDragging: 1
 
      DWORD   NewPosSize: 1
 
   } 
 
}; 
 
- Public Attributes inherited from ATL::CComObjectRootBase
LONG m_dwRef
 
- Public Attributes inherited from ATL::CWindowImplBaseT< CWindow, CControlWinTraits >
WNDPROC m_pfnSuperWindowProc
 
- Public Attributes inherited from ATL::CWindowImplRoot< CWindow >
CWndProcThunk m_thunk
 
const _ATL_MSGm_pCurrentMsg
 
DWORD m_dwState
 
- Public Attributes inherited from ATL::CWindow
HWND m_hWnd
 
- Public Attributes inherited from IContextMenu
CMIC_MASK_NOZONECHECKS typedef IContextMenuLPCONTEXTMENU
 

Private Attributes

CStartButton m_StartButton
 
CComPtr< IMenuBandm_StartMenuBand
 
CComPtr< IMenuPopupm_StartMenuPopup
 
CComPtr< IDeskBandm_TaskBand
 
CComPtr< IContextMenum_ContextMenu
 
HTHEME m_Theme
 
HFONT m_Font
 
HWND m_DesktopWnd
 
HWND m_Rebar
 
HWND m_TaskSwitch
 
HWND m_TrayNotify
 
CComPtr< IUnknownm_TrayNotifyInstance
 
DWORD m_Position
 
HMONITOR m_Monitor
 
HMONITOR m_PreviousMonitor
 
DWORD m_DraggingPosition
 
HMONITOR m_DraggingMonitor
 
RECT m_TrayRects [4]
 
SIZE m_TraySize
 
HWND m_TrayPropertiesOwner
 
HWND m_RunFileDlgOwner
 
UINT m_AutoHideState
 
SIZE m_AutoHideOffset
 
TRACKMOUSEEVENT m_MouseTrackingInfo
 
HDPA m_ShellServices
 

Additional Inherited Members

- Public Types inherited from ATL::CWindowImplRoot< CWindow >
enum  
 
- Public Types inherited from IOleWindow
typedef IOleWindowLPOLEWINDOW
 
- Public Types inherited from IUnknown
typedef IUnknownLPUNKNOWN
 
- Public Types inherited from IContextMenu
typedef struct IContextMenu::tagCMINVOKECOMMANDINFO CMINVOKECOMMANDINFO
 
typedef struct IContextMenu::tagCMINVOKECOMMANDINFOLPCMINVOKECOMMANDINFO
 
typedef struct IContextMenu::tagCMInvokeCommandInfoEx CMINVOKECOMMANDINFOEX
 
typedef struct IContextMenu::tagCMInvokeCommandInfoExLPCMINVOKECOMMANDINFOEX
 
- Static Public Attributes inherited from ATL::CWindow
static RECT rcDefault
 
- Static Public Attributes inherited from IContextMenu
static CMDSTR_VIEWDETAILSW(const WCHAR []) const WCHAR CMDSTR_NEWFOLDERW [] = {'N','e','w','F','o','l','d','e','r',0}
 
static const WCHAR CMDSTR_VIEWLISTW [] = {'V','i','e','w','L','i','s','t',0}
 
static const WCHAR CMDSTR_VIEWDETAILSW [] = {'V','i','e','w','D','e','t','a','i','l','s',0}
 

Detailed Description

Definition at line 266 of file traywnd.cpp.

Constructor & Destructor Documentation

◆ CTrayWindow()

CTrayWindow::CTrayWindow ( )
inline

Definition at line 327 of file traywnd.cpp.

327  :
328  m_StartButton(),
329  m_Theme(NULL),
330  m_Font(NULL),
332  m_Rebar(NULL),
335  m_Position(0),
336  m_Monitor(NULL),
344  Flags(0)
345  {
347  ZeroMemory(&m_TraySize, sizeof(m_TraySize));
350  }
HWND m_RunFileDlgOwner
Definition: traywnd.cpp:303
HFONT m_Font
Definition: traywnd.cpp:284
#define ZeroMemory
Definition: winbase.h:1664
DWORD Flags
Definition: traywnd.cpp:316
DWORD m_Position
Definition: traywnd.cpp:293
HMONITOR m_PreviousMonitor
Definition: traywnd.cpp:295
HWND m_DesktopWnd
Definition: traywnd.cpp:286
HWND m_Rebar
Definition: traywnd.cpp:287
HWND m_TrayNotify
Definition: traywnd.cpp:289
TRACKMOUSEEVENT m_MouseTrackingInfo
Definition: traywnd.cpp:307
HWND m_TrayPropertiesOwner
Definition: traywnd.cpp:302
RECT m_TrayRects[4]
Definition: traywnd.cpp:299
CStartButton m_StartButton
Definition: traywnd.cpp:275
UINT m_AutoHideState
Definition: traywnd.cpp:305
DWORD m_DraggingPosition
Definition: traywnd.cpp:296
HTHEME m_Theme
Definition: traywnd.cpp:282
HMONITOR m_DraggingMonitor
Definition: traywnd.cpp:297
HDPA m_ShellServices
Definition: traywnd.cpp:309
HMONITOR m_Monitor
Definition: traywnd.cpp:294
HWND m_TaskSwitch
Definition: traywnd.cpp:288
#define NULL
Definition: types.h:112
SIZE m_AutoHideOffset
Definition: traywnd.cpp:306
SIZE m_TraySize
Definition: traywnd.cpp:300

◆ ~CTrayWindow()

virtual CTrayWindow::~CTrayWindow ( )
inlinevirtual

Definition at line 352 of file traywnd.cpp.

353  {
354  if (m_ShellServices != NULL)
355  {
358  }
359 
360  if (m_Font != NULL)
361  {
363  m_Font = NULL;
364  }
365 
366  if (m_Theme)
367  {
369  m_Theme = NULL;
370  }
371 
372  PostQuitMessage(0);
373  }
HRESULT ShutdownShellServices(HDPA hdpa)
HFONT m_Font
Definition: traywnd.cpp:284
BOOL WINAPI DeleteObject(_In_ HGDIOBJ)
HTHEME m_Theme
Definition: traywnd.cpp:282
HDPA m_ShellServices
Definition: traywnd.cpp:309
#define NULL
Definition: types.h:112
__analysis_noreturn void WINAPI PostQuitMessage(_In_ int)
HRESULT WINAPI CloseThemeData(HTHEME hTheme)
Definition: system.c:950

Member Function Documentation

◆ _Init()

void CTrayWindow::_Init ( )
inline

Definition at line 3252 of file traywnd.cpp.

3253  {
3254  m_Position = (DWORD) -1;
3255  }
DWORD m_Position
Definition: traywnd.cpp:293
#define DWORD
Definition: nt_native.h:44

◆ AdjustSizerRect()

VOID CTrayWindow::AdjustSizerRect ( RECT rc,
DWORD  pos 
)
inline

Definition at line 1056 of file traywnd.cpp.

1057  {
1059  SIZE size;
1060 
1061  if (pos > ABE_BOTTOM)
1062  pos = ABE_BOTTOM;
1063 
1064  HRESULT hr = GetThemePartSize(m_Theme, NULL, iSizerPart[pos], 0, NULL, TS_TRUE, &size);
1065  if (FAILED_UNEXPECTEDLY(hr))
1066  return;
1067 
1068  switch (pos)
1069  {
1070  case ABE_TOP:
1071  rc->bottom -= size.cy;
1072  break;
1073  case ABE_BOTTOM:
1074  rc->top += size.cy;
1075  break;
1076  case ABE_LEFT:
1077  rc->right -= size.cx;
1078  break;
1079  case ABE_RIGHT:
1080  rc->left += size.cx;
1081  break;
1082  }
1083  }
HRESULT WINAPI GetThemePartSize(HTHEME hTheme, HDC hdc, int iPartId, int iStateId, RECT *prc, THEMESIZE eSize, SIZE *psz)
Definition: draw.c:1777
#define ABE_TOP
Definition: shellapi.h:18
HRESULT hr
Definition: shlfolder.c:183
LONG top
Definition: windef.h:307
LONG left
Definition: windef.h:306
LONG right
Definition: windef.h:308
#define ABE_LEFT
Definition: shellapi.h:17
#define ABE_RIGHT
Definition: shellapi.h:19
GLsizeiptr size
Definition: glext.h:5919
HTHEME m_Theme
Definition: traywnd.cpp:282
LONG HRESULT
Definition: typedefs.h:79
#define FAILED_UNEXPECTEDLY(hr)
Definition: shellutils.h:82
#define ABE_BOTTOM
Definition: shellapi.h:20
#define NULL
Definition: types.h:112
LONG bottom
Definition: windef.h:309

Referenced by Lock(), and OnNcCalcSize().

◆ AlignControls()

VOID CTrayWindow::AlignControls ( IN PRECT prcClient  OPTIONAL)
inline

Definition at line 1593 of file traywnd.cpp.

1594  {
1595  RECT rcClient;
1596  SIZE TraySize, StartSize;
1597  POINT ptTrayNotify = { 0, 0 };
1598  BOOL Horizontal;
1599  HDWP dwp;
1600 
1602  if (prcClient != NULL)
1603  {
1604  rcClient = *prcClient;
1605  }
1606  else
1607  {
1608  if (!GetClientRect(&rcClient))
1609  {
1610  ERR("Could not get client rect lastErr=%d\n", GetLastError());
1611  return;
1612  }
1613  }
1614 
1615  Horizontal = IsPosHorizontal();
1616 
1617  /* We're about to resize/move the start button, the rebar control and
1618  the tray notification control */
1619  dwp = BeginDeferWindowPos(3);
1620  if (dwp == NULL)
1621  {
1622  ERR("BeginDeferWindowPos failed. lastErr=%d\n", GetLastError());
1623  return;
1624  }
1625 
1626  /* Limit the Start button width to the client width, if necessary */
1627  StartSize = m_StartButton.GetSize();
1628  if (StartSize.cx > rcClient.right)
1629  StartSize.cx = rcClient.right;
1630 
1631  if (!m_Theme)
1632  {
1633  HWND hwndTaskToolbar = ::GetWindow(m_TaskSwitch, GW_CHILD);
1634  if (hwndTaskToolbar)
1635  {
1636  DWORD size = SendMessageW(hwndTaskToolbar, TB_GETBUTTONSIZE, 0, 0);
1637  StartSize.cy = HIWORD(size);
1638  }
1639  }
1640 
1641  if (m_StartButton.m_hWnd != NULL)
1642  {
1643  /* Resize and reposition the button */
1644  dwp = m_StartButton.DeferWindowPos(dwp,
1645  NULL,
1646  0,
1647  0,
1648  StartSize.cx,
1649  StartSize.cy,
1651  if (dwp == NULL)
1652  {
1653  ERR("DeferWindowPos for start button failed. lastErr=%d\n", GetLastError());
1654  return;
1655  }
1656  }
1657 
1658  /* Determine the size that the tray notification window needs */
1659  if (Horizontal)
1660  {
1661  TraySize.cx = 0;
1662  TraySize.cy = rcClient.bottom;
1663  }
1664  else
1665  {
1666  TraySize.cx = rcClient.right;
1667  TraySize.cy = 0;
1668  }
1669 
1670  if (m_TrayNotify != NULL &&
1673  (WPARAM)Horizontal,
1674  (LPARAM)&TraySize))
1675  {
1676  /* Move the tray notification window to the desired location */
1677  if (Horizontal)
1678  ptTrayNotify.x = rcClient.right - TraySize.cx;
1679  else
1680  ptTrayNotify.y = rcClient.bottom - TraySize.cy;
1681 
1682  dwp = ::DeferWindowPos(dwp,
1683  m_TrayNotify,
1684  NULL,
1685  ptTrayNotify.x,
1686  ptTrayNotify.y,
1687  TraySize.cx,
1688  TraySize.cy,
1690  if (dwp == NULL)
1691  {
1692  ERR("DeferWindowPos for notification area failed. lastErr=%d\n", GetLastError());
1693  return;
1694  }
1695  }
1696 
1697  /* Resize/Move the rebar control */
1698  if (m_Rebar != NULL)
1699  {
1700  POINT ptRebar = { 0, 0 };
1701  SIZE szRebar;
1702 
1703  SetWindowStyle(m_Rebar, CCS_VERT, Horizontal ? 0 : CCS_VERT);
1704 
1705  if (Horizontal)
1706  {
1707  ptRebar.x = StartSize.cx + GetSystemMetrics(SM_CXSIZEFRAME);
1708  szRebar.cx = ptTrayNotify.x - ptRebar.x;
1709  szRebar.cy = rcClient.bottom;
1710  }
1711  else
1712  {
1713  ptRebar.y = StartSize.cy + GetSystemMetrics(SM_CYSIZEFRAME);
1714  szRebar.cx = rcClient.right;
1715  szRebar.cy = ptTrayNotify.y - ptRebar.y;
1716  }
1717 
1718  dwp = ::DeferWindowPos(dwp,
1719  m_Rebar,
1720  NULL,
1721  ptRebar.x,
1722  ptRebar.y,
1723  szRebar.cx,
1724  szRebar.cy,
1726  }
1727 
1728  if (dwp != NULL)
1729  EndDeferWindowPos(dwp);
1730 
1731  if (m_TaskSwitch != NULL)
1732  {
1733  /* Update the task switch window configuration */
1735  }
1736  }
SIZE GetSize()
Definition: traywnd.cpp:164
HDWP WINAPI BeginDeferWindowPos(_In_ int)
#define GW_CHILD
Definition: winuser.h:758
long y
Definition: polytest.cpp:48
long x
Definition: polytest.cpp:48
#define TNWM_GETMINIMUMSIZE
Definition: precomp.h:333
DWORD WINAPI GetLastError(VOID)
Definition: except.c:1040
UINT_PTR WPARAM
Definition: windef.h:207
#define SWP_NOZORDER
Definition: winuser.h:1237
#define SetWindowStyle(hwnd, val)
Definition: utility.h:153
LONG right
Definition: windef.h:308
#define CCS_VERT
Definition: commctrl.h:2249
HWND m_Rebar
Definition: traywnd.cpp:287
HWND m_TrayNotify
Definition: traywnd.cpp:289
unsigned int BOOL
Definition: ntddk_ex.h:94
BOOL WINAPI EndDeferWindowPos(_In_ HDWP)
BOOL GetClientRect(LPRECT lpRect) const
Definition: atlwin.h:507
#define SM_CYSIZEFRAME
Definition: winuser.h:989
LONG cx
Definition: windef.h:334
LONG_PTR LPARAM
Definition: windef.h:208
BOOL IsPosHorizontal()
Definition: traywnd.cpp:1131
CStartButton m_StartButton
Definition: traywnd.cpp:275
#define SM_CXSIZEFRAME
Definition: winuser.h:987
#define TB_GETBUTTONSIZE
Definition: commctrl.h:1160
GLsizeiptr size
Definition: glext.h:5919
HTHEME m_Theme
Definition: traywnd.cpp:282
#define SWP_NOACTIVATE
Definition: winuser.h:1232
int WINAPI GetSystemMetrics(_In_ int)
unsigned long DWORD
Definition: ntddk_ex.h:95
HWND m_hWnd
Definition: atlwin.h:268
#define ERR(fmt,...)
Definition: debug.h:110
#define TSWM_UPDATETASKBARPOS
Definition: precomp.h:347
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
HWND m_TaskSwitch
Definition: traywnd.cpp:288
#define NULL
Definition: types.h:112
HRESULT WINAPI GetWindow(HWND *phwnd)
Definition: traywnd.cpp:3239
#define HIWORD(l)
Definition: typedefs.h:247
LRESULT SendMessage(UINT message, WPARAM wParam=0, LPARAM lParam=0)
Definition: atlwin.h:1051
VOID UpdateSize()
Definition: traywnd.cpp:169
LONG bottom
Definition: windef.h:309
HDWP DeferWindowPos(HDWP hWinPosInfo, HWND hWndInsertAfter, int x, int y, int cx, int cy, UINT uFlags)
Definition: atlwin.h:422
LONG cy
Definition: windef.h:335

Referenced by OnSettingChanged(), OnSize(), and Open().

◆ ApplyClipping()

VOID CTrayWindow::ApplyClipping ( IN BOOL  Clip)
inline

Definition at line 1405 of file traywnd.cpp.

1406  {
1407  RECT rcClip, rcWindow;
1408  HRGN hClipRgn;
1409 
1410  if (GetWindowRect(&rcWindow))
1411  {
1412  /* Disable clipping on systems with only one monitor */
1413  if (GetSystemMetrics(SM_CMONITORS) <= 1)
1414  Clip = FALSE;
1415 
1416  if (Clip)
1417  {
1418  rcClip = rcWindow;
1419 
1420  GetScreenRect(m_Monitor, &rcClip);
1421 
1422  if (!IntersectRect(&rcClip, &rcClip, &rcWindow))
1423  {
1424  rcClip = rcWindow;
1425  }
1426 
1427  OffsetRect(&rcClip,
1428  -rcWindow.left,
1429  -rcWindow.top);
1430 
1431  hClipRgn = CreateRectRgnIndirect(&rcClip);
1432  }
1433  else
1434  hClipRgn = NULL;
1435 
1436  /* Set the clipping region or make sure the window isn't clipped
1437  by disabling it explicitly. */
1438  SetWindowRgn(hClipRgn, TRUE);
1439  }
1440  }
BOOL WINAPI OffsetRect(_Inout_ LPRECT, _In_ int, _In_ int)
#define SM_CMONITORS
Definition: winuser.h:1034
#define TRUE
Definition: types.h:120
HRGN WINAPI CreateRectRgnIndirect(_In_ LPCRECT)
LONG top
Definition: windef.h:307
LONG left
Definition: windef.h:306
#define FALSE
Definition: types.h:117
BOOL GetWindowRect(LPRECT lpRect) const
Definition: atlwin.h:764
int SetWindowRgn(HRGN hRgn, BOOL bRedraw=FALSE)
Definition: atlwin.h:1229
int WINAPI GetSystemMetrics(_In_ int)
BOOL WINAPI IntersectRect(_Out_ LPRECT, _In_ LPCRECT, _In_ LPCRECT)
HMONITOR m_Monitor
Definition: traywnd.cpp:294
#define NULL
Definition: types.h:112
HMONITOR GetScreenRect(IN HMONITOR hMonitor, IN OUT RECT *pRect)
Definition: traywnd.cpp:1018

Referenced by CheckTrayWndPosition(), Lock(), OnEnterSizeMove(), and OnSize().

◆ CalculateValidSize()

HMONITOR CTrayWindow::CalculateValidSize ( IN DWORD  Position,
IN OUT RECT pRect 
)
inline

Definition at line 1136 of file traywnd.cpp.

1139  {
1140  RECT rcScreen;
1141  //BOOL Horizontal;
1142  HMONITOR hMon;
1143  SIZE szMax, szWnd;
1144 
1145  //Horizontal = IsPosHorizontal();
1146 
1147  szWnd.cx = pRect->right - pRect->left;
1148  szWnd.cy = pRect->bottom - pRect->top;
1149 
1150  rcScreen = *pRect;
1151  hMon = GetScreenRectFromRect(
1152  &rcScreen,
1153  MONITOR_DEFAULTTONEAREST);
1154 
1155  /* Calculate the maximum size of the tray window and limit the window
1156  size to half of the screen's size. */
1157  szMax.cx = (rcScreen.right - rcScreen.left) / 2;
1158  szMax.cy = (rcScreen.bottom - rcScreen.top) / 2;
1159  if (szWnd.cx > szMax.cx)
1160  szWnd.cx = szMax.cx;
1161  if (szWnd.cy > szMax.cy)
1162  szWnd.cy = szMax.cy;
1163 
1164  /* FIXME - calculate */
1165 
1167  &rcScreen,
1168  &szWnd,
1169  pRect);
1170 
1171  return hMon;
1172  }
VOID GetTrayRectFromScreenRect(IN DWORD Position, IN const RECT *pScreen, IN const SIZE *pTraySize OPTIONAL, OUT RECT *pRect)
Definition: traywnd.cpp:1110
static COORD Position
Definition: mouse.c:34
LONG top
Definition: windef.h:307
HMONITOR GetScreenRectFromRect(IN OUT RECT *pRect, IN DWORD dwFlags)
Definition: traywnd.cpp:966
LONG left
Definition: windef.h:306
LONG right
Definition: windef.h:308
LONG cx
Definition: windef.h:334
LONG bottom
Definition: windef.h:309
LONG cy
Definition: windef.h:335

Referenced by FitToRebar().

◆ ChangingWinPos()

VOID CTrayWindow::ChangingWinPos ( IN OUT LPWINDOWPOS  pwp)
inline

Definition at line 1313 of file traywnd.cpp.

1314  {
1315  RECT rcTray;
1316 
1317  if (IsDragging)
1318  {
1319  rcTray.left = pwp->x;
1320  rcTray.top = pwp->y;
1321  rcTray.right = rcTray.left + pwp->cx;
1322  rcTray.bottom = rcTray.top + pwp->cy;
1323 
1324  if (!EqualRect(&rcTray,
1326  {
1327  /* Recalculate the rectangle, the user dragged the tray
1328  window to another monitor or the window was somehow else
1329  moved or resized */
1331  &rcTray,
1333  //m_TrayRects[DraggingPosition] = rcTray;
1334  }
1335 
1336  //Monitor = CalculateValidSize(DraggingPosition,
1337  // &rcTray);
1338 
1341  IsDragging = FALSE;
1342 
1343  m_TrayRects[m_Position] = rcTray;
1344  goto ChangePos;
1345  }
1346  else if (GetWindowRect(&rcTray))
1347  {
1348  if (InSizeMove)
1349  {
1350  if (!(pwp->flags & SWP_NOMOVE))
1351  {
1352  rcTray.left = pwp->x;
1353  rcTray.top = pwp->y;
1354  }
1355 
1356  if (!(pwp->flags & SWP_NOSIZE))
1357  {
1358  rcTray.right = rcTray.left + pwp->cx;
1359  rcTray.bottom = rcTray.top + pwp->cy;
1360  }
1361 
1363 
1364  if (!(pwp->flags & (SWP_NOMOVE | SWP_NOSIZE)))
1365  {
1366  SIZE szWnd;
1367 
1368  szWnd.cx = pwp->cx;
1369  szWnd.cy = pwp->cy;
1370 
1371  MakeTrayRectWithSize(m_Position, &szWnd, &rcTray);
1372  }
1373 
1374  m_TrayRects[m_Position] = rcTray;
1375  }
1376  else if (m_Position != (DWORD)-1)
1377  {
1378  /* If the user isn't resizing the tray window we need to make sure the
1379  new size or position is valid. this is to prevent changes to the window
1380  without user interaction. */
1381  rcTray = m_TrayRects[m_Position];
1382 
1384  {
1385  rcTray.left += m_AutoHideOffset.cx;
1386  rcTray.right += m_AutoHideOffset.cx;
1387  rcTray.top += m_AutoHideOffset.cy;
1388  rcTray.bottom += m_AutoHideOffset.cy;
1389  }
1390 
1391  }
1392 
1393 ChangePos:
1394  m_TraySize.cx = rcTray.right - rcTray.left;
1395  m_TraySize.cy = rcTray.bottom - rcTray.top;
1396 
1397  pwp->flags &= ~(SWP_NOMOVE | SWP_NOSIZE);
1398  pwp->x = rcTray.left;
1399  pwp->y = rcTray.top;
1400  pwp->cx = m_TraySize.cx;
1401  pwp->cy = m_TraySize.cy;
1402  }
1403  }
DWORD IsDragging
Definition: traywnd.cpp:321
LONG top
Definition: windef.h:307
LONG left
Definition: windef.h:306
DWORD m_Position
Definition: traywnd.cpp:293
LONG right
Definition: windef.h:308
TW_STRUCKRECTS2 sr
Definition: precomp.h:209
DWORD InSizeMove
Definition: traywnd.cpp:320
VOID MakeTrayRectWithSize(IN DWORD Position, IN const SIZE *pTraySize, IN OUT RECT *pRect)
Definition: traywnd.cpp:1085
#define FALSE
Definition: types.h:117
DWORD AutoHide
Definition: precomp.h:192
BOOL GetWindowRect(LPRECT lpRect) const
Definition: atlwin.h:764
TaskbarSettings g_TaskbarSettings
Definition: settings.cpp:23
LONG cx
Definition: windef.h:334
RECT m_TrayRects[4]
Definition: traywnd.cpp:299
DWORD m_DraggingPosition
Definition: traywnd.cpp:296
HMONITOR m_DraggingMonitor
Definition: traywnd.cpp:297
unsigned long DWORD
Definition: ntddk_ex.h:95
DWORD GetDraggingRectFromRect(IN OUT RECT *pRect, OUT HMONITOR *phMonitor)
Definition: traywnd.cpp:1295
#define SWP_NOSIZE
Definition: winuser.h:1235
BOOL WINAPI EqualRect(_In_ LPCRECT, _In_ LPCRECT)
HMONITOR m_Monitor
Definition: traywnd.cpp:294
SIZE m_AutoHideOffset
Definition: traywnd.cpp:306
LONG bottom
Definition: windef.h:309
#define SWP_NOMOVE
Definition: winuser.h:1234
LONG cy
Definition: windef.h:335
SIZE m_TraySize
Definition: traywnd.cpp:300

Referenced by OnWindowPosChanging().

◆ CheckTrayWndPosition()

VOID CTrayWindow::CheckTrayWndPosition ( )
inline

Definition at line 1494 of file traywnd.cpp.

1495  {
1496  /* Force the rebar bands to resize */
1498  IID_IDeskBand,
1500  0,
1501  NULL,
1502  NULL);
1503 
1504  /* Calculate the size of the taskbar based on the rebar */
1506 
1507  /* Move the tray window */
1508  /* The handler of WM_WINDOWPOSCHANGING will override whatever size
1509  * and position we use here with m_TrayRects */
1510  SetWindowPos(NULL, 0, 0, 0, 0, SWP_NOZORDER | SWP_NOACTIVATE);
1511  ResizeWorkArea();
1513  }
void FitToRebar(PRECT pRect)
Definition: traywnd.cpp:1738
#define TRUE
Definition: types.h:120
BOOL SetWindowPos(HWND hWndInsertAfter, int x, int y, int cx, int cy, UINT nFlags)
Definition: atlwin.h:1223
CComPtr< ITrayBandSite > m_TrayBandSite
Definition: traywnd.cpp:312
#define SWP_NOZORDER
Definition: winuser.h:1237
DWORD m_Position
Definition: traywnd.cpp:293
RECT m_TrayRects[4]
Definition: traywnd.cpp:299
#define SWP_NOACTIVATE
Definition: winuser.h:1232
VOID ApplyClipping(IN BOOL Clip)
Definition: traywnd.cpp:1405
VOID ResizeWorkArea()
Definition: traywnd.cpp:1442
#define NULL
Definition: types.h:112
HRESULT WINAPI IUnknown_Exec(IUnknown *lpUnknown, REFGUID pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
Definition: ordinal.c:1080

Referenced by OnDisplayChange(), OnSettingChanged(), and Open().

◆ Close()

HRESULT STDMETHODCALLTYPE CTrayWindow::Close ( )
inline

Definition at line 2093 of file traywnd.cpp.

2094  {
2095  if (m_hWnd != NULL)
2096  {
2099  0,
2100  0);
2101  }
2102 
2103  return S_OK;
2104  }
HWND m_hWnd
Definition: atlwin.h:268
#define S_OK
Definition: intsafe.h:52
#define NULL
Definition: types.h:112
#define WM_APP_TRAYDESTROY
Definition: traywnd.cpp:29
LRESULT SendMessage(UINT message, WPARAM wParam=0, LPARAM lParam=0)
Definition: atlwin.h:1051

◆ ContextSensitiveHelp()

HRESULT WINAPI CTrayWindow::ContextSensitiveHelp ( BOOL  fEnterMode)
inline

Implements IOleWindow.

Definition at line 3247 of file traywnd.cpp.

3248  {
3249  return E_NOTIMPL;
3250  }
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ DisplayProperties()

HWND STDMETHODCALLTYPE CTrayWindow::DisplayProperties ( )
inline

Definition at line 520 of file traywnd.cpp.

521  {
522  HWND hTrayProp;
523 
525  {
527  if (hTrayProp != NULL &&
528  hTrayProp != m_TrayPropertiesOwner)
529  {
530  SetForegroundWindow(hTrayProp);
531  return NULL;
532  }
533  }
534 
536  return NULL;
537  }
static DWORD WINAPI s_TrayPropertiesThread(IN OUT PVOID pParam)
Definition: traywnd.cpp:513
#define CloseHandle
Definition: compat.h:598
HWND GetLastActivePopup() const
Definition: atlwin.h:630
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)
Definition: thread.c:136
HWND m_TrayPropertiesOwner
Definition: traywnd.cpp:302
#define NULL
Definition: types.h:112
BOOL WINAPI SetForegroundWindow(_In_ HWND)

Referenced by ExecContextMenuCmd(), and HandleCommand().

◆ DisplayRunFileDlg()

void CTrayWindow::DisplayRunFileDlg ( )
inline

Definition at line 467 of file traywnd.cpp.

468  {
469  HWND hRunDlg;
470  if (m_RunFileDlgOwner)
471  {
473  if (hRunDlg != NULL &&
474  hRunDlg != m_RunFileDlgOwner)
475  {
476  SetForegroundWindow(hRunDlg);
477  return;
478  }
479  }
480 
482  }
HWND m_RunFileDlgOwner
Definition: traywnd.cpp:303
#define CloseHandle
Definition: compat.h:598
HWND GetLastActivePopup() const
Definition: atlwin.h:630
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)
Definition: thread.c:136
static DWORD WINAPI s_RunFileDlgThread(IN OUT PVOID pParam)
Definition: traywnd.cpp:461
#define NULL
Definition: types.h:112
BOOL WINAPI SetForegroundWindow(_In_ HWND)

Referenced by HandleCommand(), and HandleHotKey().

◆ DoExitWindows()

LRESULT CTrayWindow::DoExitWindows ( )
inline

Definition at line 407 of file traywnd.cpp.

408  {
409  /* Display the ReactOS Shutdown Dialog */
411 
412  /*
413  * If the user presses CTRL+ALT+SHIFT while exiting
414  * the shutdown dialog, exit the shell cleanly.
415  */
416  if ((GetKeyState(VK_CONTROL) & 0x8000) &&
417  (GetKeyState(VK_SHIFT) & 0x8000) &&
418  (GetKeyState(VK_MENU) & 0x8000))
419  {
420  PostMessage(WM_QUIT, 0, 0);
421  }
422  return 0;
423  }
#define WM_QUIT
Definition: winuser.h:1610
#define VK_MENU
Definition: winuser.h:2184
#define VK_SHIFT
Definition: winuser.h:2182
SHORT WINAPI GetKeyState(_In_ int)
void WINAPI ExitWindowsDialog(HWND hWndOwner)
Definition: dialogs.cpp:1617
HWND m_hWnd
Definition: atlwin.h:268
BOOL PostMessage(UINT message, WPARAM wParam=0, LPARAM lParam=0)
Definition: atlwin.h:979
#define VK_CONTROL
Definition: winuser.h:2183

Referenced by HandleCommand(), OnDoExitWindows(), and OnSysCommand().

◆ DrawSizerWithTheme()

int CTrayWindow::DrawSizerWithTheme ( IN HRGN  hRgn)
inline

Definition at line 2008 of file traywnd.cpp.

2009  {
2010  HDC hdc;
2011  RECT rect;
2013  SIZE size;
2014 
2016 
2017  HRESULT hr = GetThemePartSize(m_Theme, NULL, iSizerPart[m_Position], 0, NULL, TS_TRUE, &size);
2018  if (FAILED_UNEXPECTEDLY(hr))
2019  return 0;
2020 
2021  GetWindowRect(&rect);
2022  OffsetRect(&rect, -rect.left, -rect.top);
2023 
2024  hdc = GetWindowDC();
2025 
2026  switch (m_Position)
2027  {
2028  case ABE_LEFT:
2029  rect.left = rect.right - size.cx;
2030  break;
2031  case ABE_TOP:
2032  rect.top = rect.bottom - size.cy;
2033  break;
2034  case ABE_RIGHT:
2035  rect.right = rect.left + size.cx;
2036  break;
2037  case ABE_BOTTOM:
2038  default:
2039  rect.bottom = rect.top + size.cy;
2040  break;
2041  }
2042 
2043  DrawThemeBackground(m_Theme, hdc, iSizerPart[m_Position], 0, &rect, 0);
2044 
2045  ReleaseDC(hdc);
2046  return 0;
2047  }
HRESULT WINAPI GetThemePartSize(HTHEME hTheme, HDC hdc, int iPartId, int iStateId, RECT *prc, THEMESIZE eSize, SIZE *psz)
Definition: draw.c:1777
#define ABE_TOP
Definition: shellapi.h:18
HRESULT hr
Definition: shlfolder.c:183
BOOL WINAPI OffsetRect(_Inout_ LPRECT, _In_ int, _In_ int)
static HDC
Definition: imagelist.c:92
DWORD m_Position
Definition: traywnd.cpp:293
#define ABE_LEFT
Definition: shellapi.h:17
HRESULT WINAPI DrawThemeBackground(HTHEME hTheme, HDC hdc, int iPartId, int iStateId, const RECT *pRect, const RECT *pClipRect)
Definition: draw.c:128
& rect
Definition: startmenu.cpp:1413
BOOL GetWindowRect(LPRECT lpRect) const
Definition: atlwin.h:764
#define ABE_RIGHT
Definition: shellapi.h:19
GLsizeiptr size
Definition: glext.h:5919
HTHEME m_Theme
Definition: traywnd.cpp:282
#define ASSERT(a)
Definition: mode.c:44
LONG HRESULT
Definition: typedefs.h:79
HDC GetWindowDC()
Definition: atlwin.h:732
#define FAILED_UNEXPECTEDLY(hr)
Definition: shellutils.h:82
HDC hdc
Definition: main.c:9
int ReleaseDC(HDC hDC)
Definition: atlwin.h:1009
#define ABE_BOTTOM
Definition: shellapi.h:20
#define NULL
Definition: types.h:112

Referenced by OnNcPaint().

◆ EraseBackgroundWithTheme()

LRESULT CTrayWindow::EraseBackgroundWithTheme ( HDC  hdc)
inline

Definition at line 1992 of file traywnd.cpp.

1993  {
1994  RECT rect;
1996 
1998 
1999  if (m_Theme)
2000  {
2001  GetClientRect(&rect);
2002  DrawThemeBackground(m_Theme, hdc, iSBkgndPart[m_Position], 0, &rect, 0);
2003  }
2004 
2005  return 0;
2006  }
DWORD m_Position
Definition: traywnd.cpp:293
HRESULT WINAPI DrawThemeBackground(HTHEME hTheme, HDC hdc, int iPartId, int iStateId, const RECT *pRect, const RECT *pClipRect)
Definition: draw.c:128
& rect
Definition: startmenu.cpp:1413
BOOL GetClientRect(LPRECT lpRect) const
Definition: atlwin.h:507
HTHEME m_Theme
Definition: traywnd.cpp:282
#define ASSERT(a)
Definition: mode.c:44
HDC hdc
Definition: main.c:9
#define ABE_BOTTOM
Definition: shellapi.h:20

Referenced by OnEraseBackground().

◆ ExecContextMenuCmd()

BOOL STDMETHODCALLTYPE CTrayWindow::ExecContextMenuCmd ( IN UINT  uiCmd)
inline

Definition at line 579 of file traywnd.cpp.

580  {
581  switch (uiCmd)
582  {
585  break;
586 
589  TEXT("open"));
590  break;
591 
594  TEXT("explore"));
595  break;
596 
597  case ID_LOCKTASKBAR:
599  {
601  }
602  break;
603 
606  break;
607 
609  break;
610 
612  ShowDesktop();
613  break;
614 
619  break;
620 
625  break;
626 
631  break;
632 
635  break;
636 
638  //FIXME: Use SHRunControlPanel
639  ShellExecuteW(m_hWnd, NULL, L"timedate.cpl", NULL, NULL, SW_NORMAL);
640  break;
641 
643  RestoreAll();
644  break;
645 
646  default:
647  TRACE("ITrayWindow::ExecContextMenuCmd(%u): Unhandled Command ID!\n", uiCmd);
648  return FALSE;
649  }
650 
651  return TRUE;
652  }
#define SW_NORMAL
Definition: winuser.h:763
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)
#define ABN_WINDOWARRANGE
Definition: shellapi.h:72
#define ID_SHELL_CMD_PROPERTIES
Definition: resource.h:185
#define TRUE
Definition: types.h:120
#define ID_SHELL_CMD_RESTORE_ALL
Definition: resource.h:197
#define ID_SHELL_CMD_UNDO_ACTION
Definition: resource.h:190
#define ID_SHELL_CMD_OPEN_TASKMGR
Definition: resource.h:189
VOID ShowCustomizeNotifyIcons(HINSTANCE hInst, HWND hExplorer)
#define ID_SHELL_CMD_SHOW_DESKTOP
Definition: resource.h:191
VOID RestoreAll()
Definition: traywnd.cpp:2902
#define ID_SHELL_CMD_CUST_NOTIF
Definition: resource.h:195
#define ID_SHELL_CMD_CASCADE_WND
Definition: resource.h:194
void appbar_notify_all(HMONITOR hMon, UINT uMsg, HWND hwndExclude, LPARAM lParam)
Definition: appbar.cpp:78
HWND STDMETHODCALLTYPE DisplayProperties()
Definition: traywnd.cpp:520
VOID OpenTaskManager(IN HWND hWndOwner)
Definition: traywnd.cpp:557
#define FALSE
Definition: types.h:117
#define MDITILE_HORIZONTAL
Definition: winuser.h:2168
VOID OpenCommonStartMenuDirectory(IN HWND hWndOwner, IN LPCTSTR lpOperation)
Definition: traywnd.cpp:539
TaskbarSettings g_TaskbarSettings
Definition: settings.cpp:23
#define ID_SHELL_CMD_EXPLORE_ALL_USERS
Definition: resource.h:187
#define TRACE(s)
Definition: solgame.cpp:4
#define MDITILE_SKIPDISABLED
Definition: winuser.h:2167
#define MDITILE_VERTICAL
Definition: winuser.h:2169
HINSTANCE hExplorerInstance
Definition: explorer.cpp:24
static const WCHAR L[]
Definition: oid.c:1250
HWND m_hWnd
Definition: atlwin.h:268
#define ID_SHELL_CMD_OPEN_ALL_USERS
Definition: resource.h:186
#define ID_SHELL_CMD_TILE_WND_H
Definition: resource.h:193
#define TEXT(s)
Definition: k32.h:26
VOID ShowDesktop()
Definition: traywnd.cpp:2897
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)
#define ID_LOCKTASKBAR
Definition: resource.h:188
#define NULL
Definition: types.h:112
HINSTANCE WINAPI ShellExecuteW(HWND hwnd, LPCWSTR lpVerb, LPCWSTR lpFile, LPCWSTR lpParameters, LPCWSTR lpDirectory, INT nShowCmd)
Definition: shlexec.cpp:2274
#define ID_SHELL_CMD_ADJUST_DAT
Definition: resource.h:196
DWORD WINAPI SHRestricted(RESTRICTIONS policy)
Definition: shpolicy.c:836
#define ID_SHELL_CMD_TILE_WND_V
Definition: resource.h:192

◆ ExecResourceCmd()

HRESULT CTrayWindow::ExecResourceCmd ( int  id)
inline

Definition at line 383 of file traywnd.cpp.

384  {
385  WCHAR szCommand[256];
386  WCHAR *pszParameters;
387 
389  id,
390  szCommand,
391  _countof(szCommand)))
392  {
393  return E_FAIL;
394  }
395 
396  pszParameters = wcschr(szCommand, L'>');
397  if (pszParameters)
398  {
399  *pszParameters = 0;
400  pszParameters++;
401  }
402 
403  ShellExecuteW(m_hWnd, NULL, szCommand, pszParameters, NULL, SW_SHOWNORMAL);
404  return S_OK;
405  }
#define E_FAIL
Definition: ddrawi.h:102
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
_CONST_RETURN wchar_t *__cdecl wcschr(_In_z_ const wchar_t *_Str, wchar_t _Ch)
__wchar_t WCHAR
Definition: xmlstorage.h:180
HINSTANCE hExplorerInstance
Definition: explorer.cpp:24
#define _countof(array)
Definition: sndvol32.h:68
static const WCHAR L[]
Definition: oid.c:1250
HWND m_hWnd
Definition: atlwin.h:268
#define S_OK
Definition: intsafe.h:52
#define SW_SHOWNORMAL
Definition: winuser.h:764
#define NULL
Definition: types.h:112
HINSTANCE WINAPI ShellExecuteW(HWND hwnd, LPCWSTR lpVerb, LPCWSTR lpFile, LPCWSTR lpParameters, LPCWSTR lpDirectory, INT nShowCmd)
Definition: shlexec.cpp:2274

Referenced by HandleCommand(), and HandleHotKey().

◆ FitToRebar()

void CTrayWindow::FitToRebar ( PRECT  pRect)
inline

Definition at line 1738 of file traywnd.cpp.

1739  {
1740  /* Get the rect of the rebar */
1741  RECT rebarRect, taskbarRect, clientRect;
1742  ::GetWindowRect(m_Rebar, &rebarRect);
1743  ::GetWindowRect(m_hWnd, &taskbarRect);
1744  ::GetClientRect(m_hWnd, &clientRect);
1745  OffsetRect(&rebarRect, -taskbarRect.left, -taskbarRect.top);
1746 
1747  /* Calculate the difference of size of the taskbar and the rebar */
1748  SIZE margins;
1749  margins.cx = taskbarRect.right - taskbarRect.left - clientRect.right + clientRect.left;
1750  margins.cy = taskbarRect.bottom - taskbarRect.top - clientRect.bottom + clientRect.top;
1751 
1752  /* Calculate the new size of the rebar and make it resize, then change the new taskbar size */
1753  switch (m_Position)
1754  {
1755  case ABE_TOP:
1756  rebarRect.bottom = rebarRect.top + pRect->bottom - pRect->top - margins.cy;
1758  pRect->bottom = pRect->top + rebarRect.bottom - rebarRect.top + margins.cy;
1759  break;
1760  case ABE_BOTTOM:
1761  rebarRect.top = rebarRect.bottom - (pRect->bottom - pRect->top - margins.cy);
1763  pRect->top = pRect->bottom - (rebarRect.bottom - rebarRect.top + margins.cy);
1764  break;
1765  case ABE_LEFT:
1766  rebarRect.right = rebarRect.left + (pRect->right - pRect->left - margins.cx);
1768  pRect->right = pRect->left + (rebarRect.right - rebarRect.left + margins.cx);
1769  break;
1770  case ABE_RIGHT:
1771  rebarRect.left = rebarRect.right - (pRect->right - pRect->left - margins.cx);
1773  pRect->left = pRect->right - (rebarRect.right - rebarRect.left + margins.cx);
1774  break;
1775  }
1776 
1778  }
#define ABE_TOP
Definition: shellapi.h:18
#define RB_SIZETORECT
Definition: commctrl.h:1598
BOOL WINAPI OffsetRect(_Inout_ LPRECT, _In_ int, _In_ int)
LONG top
Definition: windef.h:307
LONG left
Definition: windef.h:306
DWORD m_Position
Definition: traywnd.cpp:293
HMONITOR CalculateValidSize(IN DWORD Position, IN OUT RECT *pRect)
Definition: traywnd.cpp:1136
LONG right
Definition: windef.h:308
#define ABE_LEFT
Definition: shellapi.h:17
HWND m_Rebar
Definition: traywnd.cpp:287
BOOL GetClientRect(LPRECT lpRect) const
Definition: atlwin.h:507
BOOL GetWindowRect(LPRECT lpRect) const
Definition: atlwin.h:764
#define ABE_RIGHT
Definition: shellapi.h:19
LONG_PTR LPARAM
Definition: windef.h:208
HWND m_hWnd
Definition: atlwin.h:268
static RECT margins
Definition: print.c:55
#define RBSTR_CHANGERECT
Definition: commctrl.h:1596
#define ABE_BOTTOM
Definition: shellapi.h:20
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
LONG bottom
Definition: windef.h:309

Referenced by CheckTrayWndPosition(), OnExitSizeMove(), and OnSizing().

◆ GetCommandString()

HRESULT STDMETHODCALLTYPE CTrayWindow::GetCommandString ( UINT_PTR  idCmd,
UINT  uType,
UINT pwReserved,
LPSTR  pszName,
UINT  cchMax 
)
inline

Implements IContextMenu.

Definition at line 2200 of file traywnd.cpp.

2205  {
2206  if (!m_ContextMenu)
2207  return E_INVALIDARG;
2208 
2209  return m_ContextMenu->GetCommandString(idCmd, uType, pwReserved, pszName, cchMax);
2210  }
CComPtr< IContextMenu > m_ContextMenu
Definition: traywnd.cpp:281
#define E_INVALIDARG
Definition: ddrawi.h:101
UINT cchMax

◆ GetDraggingRectFromPt()

DWORD CTrayWindow::GetDraggingRectFromPt ( IN POINT  pt,
OUT RECT pRect,
OUT HMONITOR phMonitor 
)
inline

Definition at line 1193 of file traywnd.cpp.

1197  {
1198  HMONITOR hMon, hMonNew;
1199  DWORD PosH, PosV, Pos;
1200  SIZE DeltaPt, ScreenOffset;
1201  RECT rcScreen;
1202 
1203  rcScreen.left = 0;
1204  rcScreen.top = 0;
1205 
1206  /* Determine the screen rectangle */
1207  hMon = MonitorFromPoint(pt, MONITOR_DEFAULTTONULL);
1208  if (hMon != NULL)
1209  {
1210  MONITORINFO mi;
1211 
1212  mi.cbSize = sizeof(mi);
1213  if (!GetMonitorInfo(hMon, &mi))
1214  {
1215  hMon = NULL;
1216  goto GetPrimaryScreenRect;
1217  }
1218 
1219  /* make left top corner of the screen zero based to
1220  make calculations easier */
1221  pt.x -= mi.rcMonitor.left;
1222  pt.y -= mi.rcMonitor.top;
1223 
1224  ScreenOffset.cx = mi.rcMonitor.left;
1225  ScreenOffset.cy = mi.rcMonitor.top;
1226  rcScreen.right = mi.rcMonitor.right - mi.rcMonitor.left;
1227  rcScreen.bottom = mi.rcMonitor.bottom - mi.rcMonitor.top;
1228  }
1229  else
1230  {
1231 GetPrimaryScreenRect:
1232  ScreenOffset.cx = 0;
1233  ScreenOffset.cy = 0;
1234  rcScreen.right = GetSystemMetrics(SM_CXSCREEN);
1235  rcScreen.bottom = GetSystemMetrics(SM_CYSCREEN);
1236  }
1237 
1238  /* Calculate the nearest screen border */
1239  if (pt.x < rcScreen.right / 2)
1240  {
1241  DeltaPt.cx = pt.x;
1242  PosH = ABE_LEFT;
1243  }
1244  else
1245  {
1246  DeltaPt.cx = rcScreen.right - pt.x;
1247  PosH = ABE_RIGHT;
1248  }
1249 
1250  if (pt.y < rcScreen.bottom / 2)
1251  {
1252  DeltaPt.cy = pt.y;
1253  PosV = ABE_TOP;
1254  }
1255  else
1256  {
1257  DeltaPt.cy = rcScreen.bottom - pt.y;
1258  PosV = ABE_BOTTOM;
1259  }
1260 
1261  Pos = (DeltaPt.cx * rcScreen.bottom < DeltaPt.cy * rcScreen.right) ? PosH : PosV;
1262 
1263  /* Fix the screen origin to be relative to the primary monitor again */
1264  OffsetRect(&rcScreen,
1265  ScreenOffset.cx,
1266  ScreenOffset.cy);
1267 
1268  RECT rcPos = m_TrayRects[Pos];
1269 
1270  hMonNew = GetMonitorFromRect(&rcPos);
1271  if (hMon != hMonNew)
1272  {
1273  SIZE szTray;
1274 
1275  /* Recalculate the rectangle, we're dragging to another monitor.
1276  We don't need to recalculate the rect on single monitor systems. */
1277  szTray.cx = rcPos.right - rcPos.left;
1278  szTray.cy = rcPos.bottom - rcPos.top;
1279 
1280  GetTrayRectFromScreenRect(Pos, &rcScreen, &szTray, pRect);
1281  hMon = hMonNew;
1282  }
1283  else
1284  {
1285  /* The user is dragging the tray window on the same monitor. We don't need
1286  to recalculate the rectangle */
1287  *pRect = rcPos;
1288  }
1289 
1290  *phMonitor = hMon;
1291 
1292  return Pos;
1293  }
HMONITOR WINAPI MonitorFromPoint(POINT, DWORD)
HMONITOR GetMonitorFromRect(IN const RECT *pRect)
Definition: traywnd.cpp:993
#define ABE_TOP
Definition: shellapi.h:18
BOOL WINAPI OffsetRect(_Inout_ LPRECT, _In_ int, _In_ int)
VOID GetTrayRectFromScreenRect(IN DWORD Position, IN const RECT *pScreen, IN const SIZE *pTraySize OPTIONAL, OUT RECT *pRect)
Definition: traywnd.cpp:1110
#define pt(x, y)
Definition: drawing.c:79
ush Pos
Definition: deflate.h:92
LONG top
Definition: windef.h:307
static MONITORINFO mi
Definition: win.c:7338
LONG left
Definition: windef.h:306
LONG right
Definition: windef.h:308
#define ABE_LEFT
Definition: shellapi.h:17
RECT rcMonitor
Definition: winuser.h:3765
#define SM_CXSCREEN
Definition: winuser.h:953
#define ABE_RIGHT
Definition: shellapi.h:19
LONG cx
Definition: windef.h:334
RECT m_TrayRects[4]
Definition: traywnd.cpp:299
#define GetMonitorInfo
Definition: winuser.h:5771
#define SM_CYSCREEN
Definition: winuser.h:954
int WINAPI GetSystemMetrics(_In_ int)
unsigned long DWORD
Definition: ntddk_ex.h:95
#define ABE_BOTTOM
Definition: shellapi.h:20
DWORD cbSize
Definition: winuser.h:3764
#define NULL
Definition: types.h:112
LONG bottom
Definition: windef.h:309
LONG cy
Definition: windef.h:335

Referenced by GetDraggingRectFromRect(), and OnMoving().

◆ GetDraggingRectFromRect()

DWORD CTrayWindow::GetDraggingRectFromRect ( IN OUT RECT pRect,
OUT HMONITOR phMonitor 
)
inline

Definition at line 1295 of file traywnd.cpp.

1298  {
1299  POINT pt;
1300 
1301  /* Calculate the center of the rectangle. We call
1302  GetDraggingRectFromPt to calculate a valid
1303  dragging rectangle */
1304  pt.x = pRect->left + ((pRect->right - pRect->left) / 2);
1305  pt.y = pRect->top + ((pRect->bottom - pRect->top) / 2);
1306 
1307  return GetDraggingRectFromPt(
1308  pt,
1309  pRect,
1310  phMonitor);
1311  }
#define pt(x, y)
Definition: drawing.c:79
DWORD GetDraggingRectFromPt(IN POINT pt, OUT RECT *pRect, OUT HMONITOR *phMonitor)
Definition: traywnd.cpp:1193

Referenced by ChangingWinPos().

◆ GetHWND()

HWND STDMETHODCALLTYPE CTrayWindow::GetHWND ( )
inline

Definition at line 2106 of file traywnd.cpp.

2107  {
2108  return m_hWnd;
2109  }
HWND m_hWnd
Definition: atlwin.h:268

◆ GetMonitorFromRect()

HMONITOR CTrayWindow::GetMonitorFromRect ( IN const RECT pRect)
inline

Definition at line 993 of file traywnd.cpp.

995  {
996  HMONITOR hMon;
997 
998  /* In case the monitor sizes or saved sizes differ a bit (probably
999  not a lot, only so the tray window overlaps into another monitor
1000  now), minimize the risk that we determine a wrong monitor by
1001  using the center point of the tray window if we can't determine
1002  it using the rectangle. */
1003  hMon = MonitorFromRect(pRect, MONITOR_DEFAULTTONULL);
1004  if (hMon == NULL)
1005  {
1006  POINT pt;
1007 
1008  pt.x = pRect->left + ((pRect->right - pRect->left) / 2);
1009  pt.y = pRect->top + ((pRect->bottom - pRect->top) / 2);
1010 
1011  /* be less error-prone, find the nearest monitor */
1012  hMon = MonitorFromPoint(pt, MONITOR_DEFAULTTONEAREST);
1013  }
1014 
1015  return hMon;
1016  }
HMONITOR WINAPI MonitorFromPoint(POINT, DWORD)
#define pt(x, y)
Definition: drawing.c:79
#define NULL
Definition: types.h:112
HMONITOR WINAPI MonitorFromRect(LPCRECT, DWORD)

Referenced by GetDraggingRectFromPt(), GetScreenRect(), and RegLoadSettings().

◆ GetScreenRect()

HMONITOR CTrayWindow::GetScreenRect ( IN HMONITOR  hMonitor,
IN OUT RECT pRect 
)
inline

Definition at line 1018 of file traywnd.cpp.

1021  {
1022  HMONITOR hMon = NULL;
1023 
1024  if (hMonitor != NULL)
1025  {
1026  MONITORINFO mi;
1027 
1028  mi.cbSize = sizeof(mi);
1029  if (!GetMonitorInfo(hMonitor, &mi))
1030  {
1031  /* Hm, the monitor is gone? Try to find a monitor where it
1032  could be located now */
1033  hMon = GetMonitorFromRect(pRect);
1034  if (hMon == NULL ||
1035  !GetMonitorInfo(hMon, &mi))
1036  {
1037  hMon = NULL;
1038  goto GetPrimaryRect;
1039  }
1040  }
1041 
1042  *pRect = mi.rcMonitor;
1043  }
1044  else
1045  {
1046 GetPrimaryRect:
1047  pRect->left = 0;
1048  pRect->top = 0;
1049  pRect->right = GetSystemMetrics(SM_CXSCREEN);
1050  pRect->bottom = GetSystemMetrics(SM_CYSCREEN);
1051  }
1052 
1053  return hMon;
1054  }
HMONITOR GetMonitorFromRect(IN const RECT *pRect)
Definition: traywnd.cpp:993
static MONITORINFO mi
Definition: win.c:7338
LONG left
Definition: windef.h:306
RECT rcMonitor
Definition: winuser.h:3765
#define SM_CXSCREEN
Definition: winuser.h:953
#define GetMonitorInfo
Definition: winuser.h:5771
#define SM_CYSCREEN
Definition: winuser.h:954
int WINAPI GetSystemMetrics(_In_ int)
DWORD cbSize
Definition: winuser.h:3764
#define NULL
Definition: types.h:112

Referenced by ApplyClipping(), and ResizeWorkArea().

◆ GetScreenRectFromRect()

HMONITOR CTrayWindow::GetScreenRectFromRect ( IN OUT RECT pRect,
IN DWORD  dwFlags 
)
inline

Definition at line 966 of file traywnd.cpp.

969  {
970  MONITORINFO mi;
971  HMONITOR hMon;
972 
973  mi.cbSize = sizeof(mi);
974  hMon = MonitorFromRect(pRect, dwFlags);
975  if (hMon != NULL &&
976  GetMonitorInfo(hMon, &mi))
977  {
978  *pRect = mi.rcMonitor;
979  }
980  else
981  {
982  pRect->left = 0;
983  pRect->top = 0;
984  pRect->right = GetSystemMetrics(SM_CXSCREEN);
985  pRect->bottom = GetSystemMetrics(SM_CYSCREEN);
986 
987  hMon = NULL;
988  }
989 
990  return hMon;
991  }
static MONITORINFO mi
Definition: win.c:7338
LONG left
Definition: windef.h:306
RECT rcMonitor
Definition: winuser.h:3765
#define SM_CXSCREEN
Definition: winuser.h:953
#define GetMonitorInfo
Definition: winuser.h:5771
#define SM_CYSCREEN
Definition: winuser.h:954
int WINAPI GetSystemMetrics(_In_ int)
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
Definition: wincrypt.h:1175
DWORD cbSize
Definition: winuser.h:3764
#define NULL
Definition: types.h:112
HMONITOR WINAPI MonitorFromRect(LPCRECT, DWORD)

Referenced by CalculateValidSize(), and RegLoadSettings().

◆ GetState()

virtual ULONG STDMETHODCALLTYPE CTrayWindow::GetState ( )
inlinevirtual

Definition at line 3205 of file traywnd.cpp.

3206  {
3207  /* FIXME: Return ABS_ flags? */
3208  TRACE("IShellDesktopTray::GetState() unimplemented!\n");
3209  return 0;
3210  }
#define TRACE(s)
Definition: solgame.cpp:4

◆ GetTrayRectFromScreenRect()

VOID CTrayWindow::GetTrayRectFromScreenRect ( IN DWORD  Position,
IN const RECT pScreen,
IN const SIZE *pTraySize  OPTIONAL,
OUT RECT pRect 
)
inline

Definition at line 1110 of file traywnd.cpp.

1114  {
1115  if (pTraySize == NULL)
1116  pTraySize = &m_TraySize;
1117 
1118  *pRect = *pScreen;
1119 
1120  if(!m_Theme)
1121  {
1122  /* Move the border outside of the screen */
1123  InflateRect(pRect,
1126  }
1127 
1128  MakeTrayRectWithSize(Position, pTraySize, pRect);
1129  }
BOOL WINAPI InflateRect(_Inout_ LPRECT, _In_ int, _In_ int)
static COORD Position
Definition: mouse.c:34
#define SM_CXEDGE
Definition: winuser.h:1002
VOID MakeTrayRectWithSize(IN DWORD Position, IN const SIZE *pTraySize, IN OUT RECT *pRect)
Definition: traywnd.cpp:1085
#define SM_CYEDGE
Definition: winuser.h:1003
HTHEME m_Theme
Definition: traywnd.cpp:282
int WINAPI GetSystemMetrics(_In_ int)
#define NULL
Definition: types.h:112
SIZE m_TraySize
Definition: traywnd.cpp:300

Referenced by CalculateValidSize(), GetDraggingRectFromPt(), and RegLoadSettings().

◆ GetTrayWindow()

virtual HRESULT STDMETHODCALLTYPE CTrayWindow::GetTrayWindow ( OUT HWND phWndTray)
inlinevirtual

Definition at line 3212 of file traywnd.cpp.

3213  {
3214  TRACE("IShellDesktopTray::GetTrayWindow(0x%p)\n", phWndTray);
3215  *phWndTray = m_hWnd;
3216  return S_OK;
3217  }
#define TRACE(s)
Definition: solgame.cpp:4
HWND m_hWnd
Definition: atlwin.h:268
#define S_OK
Definition: intsafe.h:52

◆ GetWindow()

HRESULT WINAPI CTrayWindow::GetWindow ( HWND phwnd)
inline

Implements IOleWindow.

Definition at line 3239 of file traywnd.cpp.

3240  {
3241  if (!phwnd)
3242  return E_INVALIDARG;
3243  *phwnd = m_hWnd;
3244  return S_OK;
3245  }
#define E_INVALIDARG
Definition: ddrawi.h:101
HWND m_hWnd
Definition: atlwin.h:268
#define S_OK
Definition: intsafe.h:52

Referenced by AlignControls(), and MinimizeWindowsProc().

◆ HandleCommand()

LRESULT CTrayWindow::HandleCommand ( UINT  uCommand)
inline

Definition at line 699 of file traywnd.cpp.

700  {
701  switch (uCommand)
702  {
703  case TRAYCMD_STARTMENU:
704  // TODO:
705  break;
706  case TRAYCMD_RUN_DIALOG:
708  break;
710  LogoffWindowsDialog(m_hWnd); // FIXME: Maybe handle it in a similar way as DoExitWindows?
711  break;
712  case TRAYCMD_CASCADE:
714  break;
715  case TRAYCMD_TILE_H:
717  break;
718  case TRAYCMD_TILE_V:
720  break;
722  ToggleDesktop();
723  break;
725  ShellExecuteW(m_hWnd, NULL, L"timedate.cpl", NULL, NULL, SW_NORMAL);
726  break;
729  break;
731  MinimizeAll();
732  break;
733  case TRAYCMD_RESTORE_ALL:
734  RestoreAll();
735  break;
737  ShowDesktop();
738  break;
741  break;
743  break;
746  {
748  }
749  break;
752  break;
754  // TODO:
755  break;
757  DoExitWindows();
758  break;
760  // TODO:
761  break;
763  // TODO:
764  break;
766  // TODO:
767  break;
768  case IDM_SEARCH:
771  break;
774  break;
775 
776  default:
777  break;
778  }
779 
780  return FALSE;
781  }
EXTERN_C BOOL WINAPI SHFindComputer(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
Definition: stubs.cpp:33
#define TRAYCMD_HELP_AND_SUPPORT
Definition: undocshell.h:703
#define SW_NORMAL
Definition: winuser.h:763
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)
VOID RestoreAll()
Definition: traywnd.cpp:2902
#define TRAYCMD_TILE_V
Definition: undocshell.h:693
#define IDS_HELP_COMMAND
Definition: resource.h:102
#define TRAYCMD_RESTORE_ALL
Definition: undocshell.h:698
#define TRAYCMD_TOGGLE_DESKTOP
Definition: undocshell.h:694
HWND STDMETHODCALLTYPE DisplayProperties()
Definition: traywnd.cpp:520
#define TRAYCMD_SHOW_DESKTOP
Definition: undocshell.h:699
VOID OpenTaskManager(IN HWND hWndOwner)
Definition: traywnd.cpp:557
#define TRAYCMD_SHOW_TASK_MGR
Definition: undocshell.h:700
#define FALSE
Definition: types.h:117
#define MDITILE_HORIZONTAL
Definition: winuser.h:2168
#define TRAYCMD_DATE_AND_TIME
Definition: undocshell.h:695
BOOL WINAPI SHFindFiles(PCIDLIST_ABSOLUTE pidlFolder, PCIDLIST_ABSOLUTE pidlSaveFile)
Definition: shellord.c:2234
#define TRAYCMD_SEARCH_FILES
Definition: undocshell.h:709
TaskbarSettings g_TaskbarSettings
Definition: settings.cpp:23
#define TRAYCMD_MINIMIZE_ALL
Definition: undocshell.h:697
#define TRAYCMD_PRINTERS_AND_FAXES
Definition: undocshell.h:706
HRESULT ExecResourceCmd(int id)
Definition: traywnd.cpp:383
#define IDM_SEARCH
Definition: resource.h:71
#define TRAYCMD_SEARCH_COMPUTERS
Definition: undocshell.h:710
#define TRAYCMD_CUSTOMIZE_TASKBAR
Definition: undocshell.h:701
#define MDITILE_SKIPDISABLED
Definition: winuser.h:2167
#define MDITILE_VERTICAL
Definition: winuser.h:2169
#define TRAYCMD_TASKBAR_PROPERTIES
Definition: undocshell.h:696
VOID ToggleDesktop()
Definition: traywnd.cpp:567
LRESULT DoExitWindows()
Definition: traywnd.cpp:407
static const WCHAR L[]
Definition: oid.c:1250
HWND m_hWnd
Definition: atlwin.h:268
#define TRAYCMD_TILE_H
Definition: undocshell.h:692
#define TRAYCMD_RUN_DIALOG
Definition: undocshell.h:689
void DisplayRunFileDlg()
Definition: traywnd.cpp:467
VOID MinimizeAll(BOOL bShowDesktop=FALSE)
Definition: traywnd.cpp:2875
#define TRAYCMD_SWITCH_USER_DIALOG
Definition: undocshell.h:708
#define TRAYCMD_STARTMENU
Definition: undocshell.h:688
VOID ShowDesktop()
Definition: traywnd.cpp:2897
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)
#define TRAYCMD_LOCK_DESKTOP
Definition: undocshell.h:707
#define TRAYCMD_LOCK_TASKBAR
Definition: undocshell.h:702
#define NULL
Definition: types.h:112
#define TRAYCMD_SHUTDOWN_DIALOG
Definition: undocshell.h:705
#define TRAYCMD_LOGOFF_DIALOG
Definition: undocshell.h:690
HINSTANCE WINAPI ShellExecuteW(HWND hwnd, LPCWSTR lpVerb, LPCWSTR lpFile, LPCWSTR lpParameters, LPCWSTR lpDirectory, INT nShowCmd)
Definition: shlexec.cpp:2274
EXTERN_C int WINAPI LogoffWindowsDialog(HWND hWndOwner)
Definition: dialogs.cpp:1525
#define TRAYCMD_CONTROL_PANEL
Definition: undocshell.h:704
DWORD WINAPI SHRestricted(RESTRICTIONS policy)
Definition: shpolicy.c:836
#define TRAYCMD_CASCADE
Definition: undocshell.h:691

Referenced by OnCommand().

◆ HandleHotKey()

LRESULT CTrayWindow::HandleHotKey ( DWORD  id)
inline

Definition at line 654 of file traywnd.cpp.

655  {
656  switch (id)
657  {
658  case IDHK_RUN:
660  break;
661  case IDHK_HELP:
663  break;
664  case IDHK_EXPLORE:
665  //FIXME: We don't support this yet:
666  //ShellExecuteW(0, L"explore", NULL, NULL, NULL, 1);
667  ShellExecuteW(0, NULL, L"explorer.exe", L"/e ,", NULL, 1);
668  break;
669  case IDHK_FIND:
671  break;
672  case IDHK_FIND_COMPUTER:
674  break;
675  case IDHK_SYS_PROPERTIES:
676  //FIXME: Use SHRunControlPanel
677  ShellExecuteW(m_hWnd, NULL, L"sysdm.cpl", NULL, NULL, SW_NORMAL);
678  break;
679  case IDHK_NEXT_TASK:
680  break;
681  case IDHK_PREV_TASK:
682  break;
683  case IDHK_MINIMIZE_ALL:
684  MinimizeAll();
685  break;
686  case IDHK_RESTORE_ALL:
687  RestoreAll();
688  break;
689  case IDHK_DESKTOP:
690  ToggleDesktop();
691  break;
692  case IDHK_PAGER:
693  break;
694  }
695 
696  return 0;
697  }
#define IDHK_NEXT_TASK
Definition: traywnd.cpp:53
#define IDHK_PREV_TASK
Definition: traywnd.cpp:54
EXTERN_C BOOL WINAPI SHFindComputer(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
Definition: stubs.cpp:33
#define SW_NORMAL
Definition: winuser.h:763
#define IDHK_FIND_COMPUTER
Definition: traywnd.cpp:52
#define IDHK_SYS_PROPERTIES
Definition: traywnd.cpp:55
VOID RestoreAll()
Definition: traywnd.cpp:2902
#define IDHK_DESKTOP
Definition: traywnd.cpp:56
#define IDS_HELP_COMMAND
Definition: resource.h:102
#define IDHK_MINIMIZE_ALL
Definition: traywnd.cpp:47
#define IDHK_RUN
Definition: traywnd.cpp:46
BOOL WINAPI SHFindFiles(PCIDLIST_ABSOLUTE pidlFolder, PCIDLIST_ABSOLUTE pidlSaveFile)
Definition: shellord.c:2234
#define IDHK_HELP
Definition: traywnd.cpp:49
HRESULT ExecResourceCmd(int id)
Definition: traywnd.cpp:383
VOID ToggleDesktop()
Definition: traywnd.cpp:567
static const WCHAR L[]
Definition: oid.c:1250
HWND m_hWnd
Definition: atlwin.h:268
#define IDHK_EXPLORE
Definition: traywnd.cpp:50
void DisplayRunFileDlg()
Definition: traywnd.cpp:467
VOID MinimizeAll(BOOL bShowDesktop=FALSE)
Definition: traywnd.cpp:2875
#define NULL
Definition: types.h:112
#define IDHK_FIND
Definition: traywnd.cpp:51
HINSTANCE WINAPI ShellExecuteW(HWND hwnd, LPCWSTR lpVerb, LPCWSTR lpFile, LPCWSTR lpParameters, LPCWSTR lpDirectory, INT nShowCmd)
Definition: shlexec.cpp:2274
#define IDHK_RESTORE_ALL
Definition: traywnd.cpp:48
#define IDHK_PAGER
Definition: traywnd.cpp:57

Referenced by OnHotkey().

◆ if()

CTrayWindow::if ( m_StartMenuBand = NULL)
inline

Definition at line 3092 of file traywnd.cpp.

3093  {
3094  MSG Msg;
3095  LRESULT lRet;
3096 
3097  Msg.hwnd = m_hWnd;
3098  Msg.message = uMsg;
3099  Msg.wParam = wParam;
3100  Msg.lParam = lParam;
3101 
3102  if (m_StartMenuBand->TranslateMenuMessage(&Msg, &lRet) == S_OK)
3103  {
3104  return lRet;
3105  }
3106 
3107  wParam = Msg.wParam;
3108  lParam = Msg.lParam;
3109  }
TW_UINT32 TW_UINT16 TW_UINT16 MSG
Definition: twain.h:1827
WPARAM wParam
Definition: combotst.c:138
CComPtr< IMenuBand > m_StartMenuBand
Definition: traywnd.cpp:277
HWND m_hWnd
Definition: atlwin.h:268
#define S_OK
Definition: intsafe.h:52
struct @1587 Msg[]
LONG_PTR LRESULT
Definition: windef.h:209
LPARAM lParam
Definition: combotst.c:139

◆ InvokeCommand()

HRESULT STDMETHODCALLTYPE CTrayWindow::InvokeCommand ( LPCMINVOKECOMMANDINFO  lpici)
inline

Implements IContextMenu.

Definition at line 2192 of file traywnd.cpp.

2193  {
2194  if (!m_ContextMenu)
2195  return E_INVALIDARG;
2196 
2197  return m_ContextMenu->InvokeCommand(lpici);
2198  }
CComPtr< IContextMenu > m_ContextMenu
Definition: traywnd.cpp:281
#define E_INVALIDARG
Definition: ddrawi.h:101

◆ IsDialog()

static BOOL CTrayWindow::IsDialog ( HWND  hwnd)
inlinestatic

Definition at line 2843 of file traywnd.cpp.

2844  {
2845  WCHAR szClass[32];
2846  GetClassNameW(hwnd, szClass, _countof(szClass));
2847  return wcscmp(szClass, L"#32770") == 0;
2848  }
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
int WINAPI GetClassNameW(_In_ HWND hWnd, _Out_writes_to_(nMaxCount, return) LPWSTR lpClassName, _In_ int nMaxCount)
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define _countof(array)
Definition: sndvol32.h:68
static const WCHAR L[]
Definition: oid.c:1250
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)

Referenced by MinimizeWindowsProc().

◆ IsHorizontal()

BOOL STDMETHODCALLTYPE CTrayWindow::IsHorizontal ( )
inline

Definition at line 2117 of file traywnd.cpp.

2118  {
2119  return IsPosHorizontal();
2120  }
BOOL IsPosHorizontal()
Definition: traywnd.cpp:1131

◆ IsPosHorizontal()

BOOL CTrayWindow::IsPosHorizontal ( )
inline

Definition at line 1131 of file traywnd.cpp.

1132  {
1133  return m_Position == ABE_TOP || m_Position == ABE_BOTTOM;
1134  }
#define ABE_TOP
Definition: shellapi.h:18
DWORD m_Position
Definition: traywnd.cpp:293
#define ABE_BOTTOM
Definition: shellapi.h:20

Referenced by AlignControls(), and IsHorizontal().

◆ IsSpecialHWND()

BOOL STDMETHODCALLTYPE CTrayWindow::IsSpecialHWND ( IN HWND  hWnd)
inline

Definition at line 2111 of file traywnd.cpp.

2112  {
2113  return (m_hWnd == hWnd ||
2114  (m_DesktopWnd != NULL && m_hWnd == m_DesktopWnd));
2115  }
HWND hWnd
Definition: settings.c:17
HWND m_DesktopWnd
Definition: traywnd.cpp:286
HWND m_hWnd
Definition: atlwin.h:268
#define NULL
Definition: types.h:112

◆ Lock()

BOOL STDMETHODCALLTYPE CTrayWindow::Lock ( IN BOOL  bLock)
inline

Definition at line 2122 of file traywnd.cpp.

2123  {
2124  BOOL bPrevLock = g_TaskbarSettings.bLock;
2125 
2126  if (g_TaskbarSettings.bLock != bLock)
2127  {
2128  g_TaskbarSettings.bLock = bLock;
2129 
2130  if (m_TrayBandSite != NULL)
2131  {
2132  if (!SUCCEEDED(m_TrayBandSite->Lock(bLock)))
2133  {
2134  /* Reset?? */
2135  g_TaskbarSettings.bLock = bPrevLock;
2136  return bPrevLock;
2137  }
2138  }
2139 
2140  if (m_Theme)
2141  {
2142  /* Update cached tray sizes */
2143  for(DWORD Pos = ABE_LEFT; Pos <= ABE_BOTTOM; Pos++)
2144  {
2145  RECT rcGripper = {0};
2146  AdjustSizerRect(&rcGripper, Pos);
2147 
2149  {
2150  m_TrayRects[Pos].top += rcGripper.top;
2151  m_TrayRects[Pos].left += rcGripper.left;
2152  m_TrayRects[Pos].bottom += rcGripper.bottom;
2153  m_TrayRects[Pos].right += rcGripper.right;
2154  }
2155  else
2156  {
2157  m_TrayRects[Pos].top -= rcGripper.top;
2158  m_TrayRects[Pos].left -= rcGripper.left;
2159  m_TrayRects[Pos].bottom -= rcGripper.bottom;
2160  m_TrayRects[Pos].right -= rcGripper.right;
2161  }
2162  }
2163  }
2165  ResizeWorkArea();
2167  }
2168 
2169  return bPrevLock;
2170  }
#define TRUE
Definition: types.h:120
ush Pos
Definition: deflate.h:92
BOOL SetWindowPos(HWND hWndInsertAfter, int x, int y, int cx, int cy, UINT nFlags)
Definition: atlwin.h:1223
LONG top
Definition: windef.h:307
LONG left
Definition: windef.h:306
CComPtr< ITrayBandSite > m_TrayBandSite
Definition: traywnd.cpp:312
#define SWP_NOZORDER
Definition: winuser.h:1237
LONG right
Definition: windef.h:308
#define ABE_LEFT
Definition: shellapi.h:17
unsigned int BOOL
Definition: ntddk_ex.h:94
if SUCCEEDED(hr)
TaskbarSettings g_TaskbarSettings
Definition: settings.cpp:23
RECT m_TrayRects[4]
Definition: traywnd.cpp:299
HTHEME m_Theme
Definition: traywnd.cpp:282
#define SWP_NOACTIVATE
Definition: winuser.h:1232
unsigned long DWORD
Definition: ntddk_ex.h:95
#define SWP_FRAMECHANGED
Definition: winuser.h:1230
VOID ApplyClipping(IN BOOL Clip)
Definition: traywnd.cpp:1405
#define ABE_BOTTOM
Definition: shellapi.h:20
VOID AdjustSizerRect(RECT *rc, DWORD pos)
Definition: traywnd.cpp:1056
VOID ResizeWorkArea()
Definition: traywnd.cpp:1442
#define NULL
Definition: types.h:112
LONG bottom
Definition: windef.h:309
#define SWP_NOMOVE
Definition: winuser.h:1234
#define SWP_NOOWNERZORDER
Definition: winuser.h:1239

◆ MakeTrayRectWithSize()

VOID CTrayWindow::MakeTrayRectWithSize ( IN DWORD  Position,
IN const SIZE pTraySize,
IN OUT RECT pRect 
)
inline

Definition at line 1085 of file traywnd.cpp.

1088  {
1089  switch (Position)
1090  {
1091  case ABE_LEFT:
1092  pRect->right = pRect->left + pTraySize->cx;
1093  break;
1094 
1095  case ABE_TOP:
1096  pRect->bottom = pRect->top + pTraySize->cy;
1097  break;
1098 
1099  case ABE_RIGHT:
1100  pRect->left = pRect->right - pTraySize->cx;
1101  break;
1102 
1103  case ABE_BOTTOM:
1104  default:
1105  pRect->top = pRect->bottom - pTraySize->cy;
1106  break;
1107  }
1108  }
#define ABE_TOP
Definition: shellapi.h:18
static COORD Position
Definition: mouse.c:34
#define ABE_LEFT
Definition: shellapi.h:17
#define ABE_RIGHT
Definition: shellapi.h:19
#define ABE_BOTTOM
Definition: shellapi.h:20

Referenced by ChangingWinPos(), and GetTrayRectFromScreenRect().

◆ MinimizeAll()

VOID CTrayWindow::MinimizeAll ( BOOL  bShowDesktop = FALSE)
inline

Definition at line 2875 of file traywnd.cpp.

2876  {
2877  MINIMIZE_INFO info;
2878  info.hwndDesktop = GetDesktopWindow();;
2879  info.hTrayWnd = FindWindowW(L"Shell_TrayWnd", NULL);
2880  info.hwndProgman = FindWindowW(L"Progman", NULL);
2881  info.bRet = FALSE;
2882  info.pMinimizedAll = &g_MinimizedAll;
2883  info.bShowDesktop = bShowDesktop;
2885 
2886  // invalid handles should be cleared to avoid mismatch of handles
2887  for (INT i = 0; i < g_MinimizedAll.GetSize(); ++i)
2888  {
2889  if (!::IsWindow(g_MinimizedAll[i]))
2890  g_MinimizedAll[i] = NULL;
2891  }
2892 
2895  }
HWND SetFocus()
Definition: atlwin.h:1133
BOOL IsWindow() const
Definition: atlwin.h:882
int32_t INT
Definition: typedefs.h:58
HWND m_DesktopWnd
Definition: traywnd.cpp:286
#define FALSE
Definition: types.h:117
static BOOL CALLBACK MinimizeWindowsProc(HWND hwnd, LPARAM lParam)
Definition: traywnd.cpp:2850
CSimpleArray< HWND > g_MinimizedAll
Definition: traywnd.cpp:131
HWND WINAPI GetDesktopWindow(void)
Definition: window.c:656
LONG_PTR LPARAM
Definition: windef.h:208
HWND WINAPI FindWindowW(_In_opt_ LPCWSTR, _In_opt_ LPCWSTR)
BOOL WINAPI EnumWindows(_In_ WNDENUMPROC, _In_ LPARAM)
struct _test_info info[]
Definition: SetCursorPos.c:19
static const WCHAR L[]
Definition: oid.c:1250
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 NULL
Definition: types.h:112
BOOL WINAPI SetForegroundWindow(_In_ HWND)

Referenced by HandleCommand(), HandleHotKey(), and ShowDesktop().

◆ MinimizeWindowsProc()

static BOOL CALLBACK CTrayWindow::MinimizeWindowsProc ( HWND  hwnd,
LPARAM  lParam 
)
inlinestatic

Definition at line 2850 of file traywnd.cpp.

2851  {
2852  MINIMIZE_INFO *info = (MINIMIZE_INFO *)lParam;
2853  if (hwnd == info->hwndDesktop || hwnd == info->hTrayWnd ||
2854  hwnd == info->hwndProgman)
2855  {
2856  return TRUE;
2857  }
2858  if (!info->bShowDesktop)
2859  {
2860  if (!::IsWindowEnabled(hwnd) || IsDialog(hwnd))
2861  return TRUE;
2862  HWND hwndOwner = ::GetWindow(hwnd, GW_OWNER);
2863  if (hwndOwner && !::IsWindowEnabled(hwndOwner))
2864  return TRUE;
2865  }
2866  if (::IsWindowVisible(hwnd) && !::IsIconic(hwnd))
2867  {
2869  info->bRet = TRUE;
2870  info->pMinimizedAll->Add(hwnd);
2871  }
2872  return TRUE;
2873  }
BOOL IsWindowEnabled() const
Definition: atlwin.h:887
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
#define TRUE
Definition: types.h:120
BOOL ShowWindowAsync(int nCmdShow)
Definition: atlwin.h:1274
#define SW_MINIMIZE
Definition: winuser.h:770
BOOL IsIconic() const
Definition: atlwin.h:867
#define GW_OWNER
Definition: winuser.h:761
HRESULT WINAPI GetWindow(HWND *phwnd)
Definition: traywnd.cpp:3239
static BOOL IsDialog(HWND hwnd)
Definition: traywnd.cpp:2843
LPARAM lParam
Definition: combotst.c:139
BOOL IsWindowVisible() const
Definition: atlwin.h:893

Referenced by MinimizeAll().

◆ NOTIFY_CODE_HANDLER()

CTrayWindow::NOTIFY_CODE_HANDLER ( RBN_AUTOSIZE  ,
OnRebarAutoSize   
)
inline

Definition at line 3112 of file traywnd.cpp.

3153  {
3154  MSG Msg;
3155 
3156  /* FIXME: We should keep a reference here... */
3157 
3158  while (PeekMessage(&Msg, NULL, 0, 0, PM_REMOVE))
3159  {
3160  if (Msg.message == WM_QUIT)
3161  break;
3162 
3163  if (m_StartMenuBand == NULL ||
3164  m_StartMenuBand->IsMenuMessage(&Msg) != S_OK)
3165  {
3167  DispatchMessage(&Msg);
3168  }
3169  }
3170  }
#define DispatchMessage
Definition: winuser.h:5745
BOOL WINAPI TranslateMessage(_In_ const MSG *)
#define PeekMessage
Definition: winuser.h:5810
TW_UINT32 TW_UINT16 TW_UINT16 MSG
Definition: twain.h:1827
#define WM_QUIT
Definition: winuser.h:1610
CComPtr< IMenuBand > m_StartMenuBand
Definition: traywnd.cpp:277
#define S_OK
Definition: intsafe.h:52
#define NULL
Definition: types.h:112
struct @1587 Msg[]
#define PM_REMOVE
Definition: winuser.h:1186

◆ OnAppTrayDestroy()

LRESULT CTrayWindow::OnAppTrayDestroy ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
BOOL bHandled 
)
inline

Definition at line 2776 of file traywnd.cpp.

2777  {
2778  DestroyWindow();
2779  return TRUE;
2780  }
#define TRUE
Definition: types.h:120
BOOL DestroyWindow()
Definition: atlwin.h:428

◆ OnCommand()

LRESULT CTrayWindow::OnCommand ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
BOOL bHandled 
)
inline

Definition at line 2915 of file traywnd.cpp.

2916  {
2917  LRESULT Ret = FALSE;
2918 
2919  if ((HWND) lParam == m_StartButton.m_hWnd)
2920  {
2921  return FALSE;
2922  }
2923 
2924  if (m_TrayBandSite == NULL || FAILED_UNEXPECTEDLY(m_TrayBandSite->ProcessMessage(m_hWnd, uMsg, wParam, lParam, &Ret)))
2925  {
2926  return HandleCommand(LOWORD(wParam));
2927  }
2928  return Ret;
2929  }
LRESULT HandleCommand(UINT uCommand)
Definition: traywnd.cpp:699
CComPtr< ITrayBandSite > m_TrayBandSite
Definition: traywnd.cpp:312
WPARAM wParam
Definition: combotst.c:138
#define FALSE
Definition: types.h:117
CStartButton m_StartButton
Definition: traywnd.cpp:275
#define FAILED_UNEXPECTEDLY(hr)
Definition: shellutils.h:82
HWND m_hWnd
Definition: atlwin.h:268
#define NULL
Definition: types.h:112
LONG_PTR LRESULT
Definition: windef.h:209
LPARAM lParam
Definition: combotst.c:139
#define LOWORD(l)
Definition: pedump.c:82

◆ OnContextMenu()

LRESULT CTrayWindow::OnContextMenu ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
BOOL bHandled 
)
inline

Definition at line 2664 of file traywnd.cpp.

2665  {
2666  LRESULT Ret = FALSE;
2667  POINT pt, *ppt = NULL;
2668  HWND hWndExclude = NULL;
2669 
2670  /* Check if the administrator has forbidden access to context menus */
2672  return FALSE;
2673 
2674  pt.x = (SHORT) LOWORD(lParam);
2675  pt.y = (SHORT) HIWORD(lParam);
2676 
2677  if (pt.x != -1 || pt.y != -1)
2678  ppt = &pt;
2679  else
2680  hWndExclude = m_StartButton.m_hWnd;
2681 
2682  if ((HWND) wParam == m_StartButton.m_hWnd)
2683  {
2684  /* Make sure we can't track the context menu if the start
2685  menu is currently being shown */
2687  {
2688  CComPtr<IContextMenu> ctxMenu;
2690  TrackCtxMenu(ctxMenu, ppt, hWndExclude, m_Position == ABE_BOTTOM, this);
2691  }
2692  }
2693  else
2694  {
2695  /* See if the context menu should be handled by the task band site */
2696  if (ppt != NULL && m_TrayBandSite != NULL)
2697  {
2698  HWND hWndAtPt;
2699  POINT ptClient = *ppt;
2700 
2701  /* Convert the coordinates to client-coordinates */
2702  ::MapWindowPoints(NULL, m_hWnd, &ptClient, 1);
2703 
2704  hWndAtPt = ChildWindowFromPoint(ptClient);
2705  if (hWndAtPt != NULL &&
2706  (hWndAtPt == m_Rebar || ::IsChild(m_Rebar, hWndAtPt)))
2707  {
2708  /* Check if the user clicked on the task switch window */
2709  ptClient = *ppt;
2710  ::MapWindowPoints(NULL, m_Rebar, &ptClient, 1);
2711 
2713  if (hWndAtPt == m_TaskSwitch)
2714  goto HandleTrayContextMenu;
2715 
2716  /* Forward the message to the task band site */
2717  m_TrayBandSite->ProcessMessage(m_hWnd, uMsg, wParam, lParam, &Ret);
2718  }
2719  else
2720  goto HandleTrayContextMenu;
2721  }
2722  else
2723  {
2724 HandleTrayContextMenu:
2725  /* Tray the default tray window context menu */
2726  TrackCtxMenu(this, ppt, NULL, FALSE, this);
2727  }
2728  }
2729  return Ret;
2730  }
int MapWindowPoints(HWND hWndTo, LPPOINT lpPoint, UINT nCount) const
Definition: atlwin.h:925
#define pt(x, y)
Definition: drawing.c:79
#define BM_GETSTATE
Definition: winuser.h:1907
CComPtr< ITrayBandSite > m_TrayBandSite
Definition: traywnd.cpp:312
DWORD m_Position
Definition: traywnd.cpp:293
WPARAM wParam
Definition: combotst.c:138
HRESULT CStartMenuBtnCtxMenu_CreateInstance(ITrayWindow *TrayWnd, IN HWND hWndOwner, IContextMenu **ppCtxMenu)
HWND m_Rebar
Definition: traywnd.cpp:287
BOOL IsChild(const HWND hWnd) const
Definition: atlwin.h:849
#define FALSE
Definition: types.h:117
short SHORT
Definition: pedump.c:59
#define CWP_SKIPINVISIBLE
Definition: winuser.h:208
#define CWP_SKIPDISABLED
Definition: winuser.h:209
CStartButton m_StartButton
Definition: traywnd.cpp:275
#define BST_PUSHED
Definition: winuser.h:201
HWND m_hWnd
Definition: atlwin.h:268
#define ABE_BOTTOM
Definition: shellapi.h:20
HWND ChildWindowFromPoint(POINT point) const
Definition: atlwin.h:347
HWND m_TaskSwitch
Definition: traywnd.cpp:288
#define NULL
Definition: types.h:112
#define HIWORD(l)
Definition: typedefs.h:247
LRESULT SendMessage(UINT message, WPARAM wParam=0, LPARAM lParam=0)
Definition: atlwin.h:1051
HWND ChildWindowFromPointEx(POINT point, UINT uFlags) const
Definition: atlwin.h:353
LONG_PTR LRESULT
Definition: windef.h:209
DWORD WINAPI SHRestricted(RESTRICTIONS policy)
Definition: shpolicy.c:836
HRESULT TrackCtxMenu(IN IContextMenu *contextMenu, IN POINT *ppt OPTIONAL, IN HWND hwndExclude OPTIONAL, IN BOOL TrackUp, IN PVOID Context OPTIONAL)
Definition: traywnd.cpp:855
LPARAM lParam
Definition: combotst.c:139
#define LOWORD(l)
Definition: pedump.c:82

Referenced by OnNcRButtonUp().

◆ OnCopyData()

LRESULT CTrayWindow::OnCopyData ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
BOOL bHandled 
)
inline

Definition at line 2353 of file traywnd.cpp.

2354  {
2355  COPYDATASTRUCT *pCopyData = reinterpret_cast<COPYDATASTRUCT *>(lParam);
2356  switch (pCopyData->dwData)
2357  {
2358  case TABDMC_APPBAR:
2359  return appbar_message(pCopyData);
2360  case TABDMC_NOTIFY:
2361  case TABDMC_LOADINPROC:
2363  }
2364  return FALSE;
2365  }
WPARAM wParam
Definition: combotst.c:138
LRESULT appbar_message(COPYDATASTRUCT *cds)
Definition: appbar.cpp:229
HWND m_TrayNotify
Definition: traywnd.cpp:289
ULONG_PTR dwData
Definition: winuser.h:2981
#define FALSE
Definition: types.h:117
#define TABDMC_NOTIFY
Definition: undocshell.h:714
#define TABDMC_APPBAR
Definition: undocshell.h:713
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define TABDMC_LOADINPROC
Definition: undocshell.h:715
LPARAM lParam
Definition: combotst.c:139

◆ OnCreate()

LRESULT CTrayWindow::OnCreate ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
BOOL bHandled 
)
inline

Definition at line 2216 of file traywnd.cpp.

2217  {
2218  HRESULT hRet;
2219 
2220  ((ITrayWindow*)this)->AddRef();
2221 
2222  SetWindowTheme(m_hWnd, L"TaskBar", NULL);
2223 
2224  /* Create the Start button */
2226 
2227  /* Load the saved tray window settings */
2228  RegLoadSettings();
2229 
2230  /* Create and initialize the start menu */
2232  m_StartMenuPopup = CreateStartMenu(this, &m_StartMenuBand, hbmBanner, 0);
2233 
2234  /* Create the task band */
2236  if (FAILED_UNEXPECTEDLY(hRet))
2237  return FALSE;
2238 
2239  /* Create the rebar band site. This actually creates the rebar and the tasks toolbar. */
2241  if (FAILED_UNEXPECTEDLY(hRet))
2242  return FALSE;
2243 
2244  /* Create the tray notification window */
2246  if (FAILED_UNEXPECTEDLY(hRet))
2247  return FALSE;
2248 
2249  /* Get the hwnd of the rebar */
2251  if (FAILED_UNEXPECTEDLY(hRet))
2252  return FALSE;
2253 
2254  /* Get the hwnd of the tasks toolbar */
2256  if (FAILED_UNEXPECTEDLY(hRet))
2257  return FALSE;
2258 
2259  /* Get the hwnd of the tray notification window */
2261  if (FAILED_UNEXPECTEDLY(hRet))
2262  return FALSE;
2263 
2264  SetWindowTheme(m_Rebar, L"TaskBar", NULL);
2265 
2266  UpdateFonts();
2267 
2269 
2271  {
2274  }
2275 
2276  /* Set the initial lock state in the band site */
2278 
2291 
2292  return TRUE;
2293  }
#define IDHK_NEXT_TASK
Definition: traywnd.cpp:53
#define IDHK_PREV_TASK
Definition: traywnd.cpp:54
#define IDHK_FIND_COMPUTER
Definition: traywnd.cpp:52
#define IDHK_SYS_PROPERTIES
Definition: traywnd.cpp:55
#define TRUE
Definition: types.h:120
#define TIMER_ID_AUTOHIDE
Definition: traywnd.cpp:31
IMenuPopup * CreateStartMenu(IN ITrayWindow *Tray, OUT IMenuBand **ppMenuBand, IN HBITMAP hbmBanner OPTIONAL, IN BOOL bSmallIcons)
Definition: startmnu.cpp:44
#define IDHK_DESKTOP
Definition: traywnd.cpp:56
#define VK_TAB
Definition: winuser.h:2179
#define IDHK_MINIMIZE_ALL
Definition: traywnd.cpp:47
#define AUTOHIDE_DELAY_HIDE
Definition: traywnd.cpp:34
CComPtr< ITrayBandSite > m_TrayBandSite
Definition: traywnd.cpp:312
#define IID_PPV_ARG(Itype, ppType)
HRESULT WINAPI IUnknown_GetWindow(IUnknown *lpUnknown, HWND *lphWnd)
Definition: ordinal.c:1329
#define IDHK_RUN
Definition: traywnd.cpp:46
TW_STRUCKRECTS2 sr
Definition: precomp.h:209
HWND m_Rebar
Definition: traywnd.cpp:287
HWND m_TrayNotify
Definition: traywnd.cpp:289
HRESULT CTrayNotifyWnd_CreateInstance(HWND hwndParent, REFIID riid, void **ppv)
Definition: trayntfy.cpp:372
#define FALSE
Definition: types.h:117
HWND Create(HWND hwndParent)
Definition: traywnd.cpp:221
UINT_PTR SetTimer(UINT_PTR nIDEvent, UINT nElapse, void(CALLBACK *lpfnTimer)(HWND, UINT, UINT_PTR, DWORD)=NULL)
Definition: atlwin.h:1193
void UpdateFonts()
Definition: traywnd.cpp:935
DWORD AutoHide
Definition: precomp.h:192
HRESULT WINAPI SetWindowTheme(_In_ HWND hwnd, _In_ LPCWSTR pszSubAppName, _In_ LPCWSTR pszSubIdList)
Definition: uxthemesupp.c:69
CComPtr< IDeskBand > m_TaskBand
Definition: traywnd.cpp:280
TaskbarSettings g_TaskbarSettings
Definition: settings.cpp:23
#define IDHK_HELP
Definition: traywnd.cpp:49
CStartButton m_StartButton
Definition: traywnd.cpp:275
UINT m_AutoHideState
Definition: traywnd.cpp:305
CComPtr< IMenuBand > m_StartMenuBand
Definition: traywnd.cpp:277
LONG HRESULT
Definition: typedefs.h:79
HINSTANCE hExplorerInstance
Definition: explorer.cpp:24
#define FAILED_UNEXPECTEDLY(hr)
Definition: shellutils.h:82
HRESULT CTrayBandSite_CreateInstance(IN ITrayWindow *tray, IN IDeskBand *pTaskBand, OUT ITrayBandSite **pBandSite)
Definition: tbsite.cpp:715
HDPA m_ShellServices
Definition: traywnd.cpp:309
VOID RegLoadSettings()
Definition: traywnd.cpp:1515
static const WCHAR L[]
Definition: oid.c:1250
HRESULT InitShellServices(HDPA *phdpa)
HWND m_hWnd
Definition: atlwin.h:268
CComPtr< IMenuPopup > m_StartMenuPopup
Definition: traywnd.cpp:278
#define AUTOHIDE_HIDING
Definition: traywnd.cpp:44
#define IDHK_EXPLORE
Definition: traywnd.cpp:50
#define MOD_CONTROL
Definition: imm.h:323
HBITMAP WINAPI LoadBitmapW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
Definition: cursoricon.c:2132
#define MOD_SHIFT
Definition: imm.h:324
HWND m_TaskSwitch
Definition: traywnd.cpp:288
#define NULL
Definition: types.h:112
#define IDHK_FIND
Definition: traywnd.cpp:51
#define IDB_STARTMENU
Definition: resource.h:44
#define VK_F1
Definition: winuser.h:2235
CComPtr< IUnknown > m_TrayNotifyInstance
Definition: traywnd.cpp:291
#define VK_PAUSE
Definition: winuser.h:2185
#define IDHK_RESTORE_ALL
Definition: traywnd.cpp:48
#define MOD_WIN
Definition: winuser.h:2624
static HBITMAP
Definition: button.c:44
BOOL WINAPI RegisterHotKey(_In_opt_ HWND, _In_ int, _In_ UINT, _In_ UINT)
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
HRESULT CTaskBand_CreateInstance(IN ITrayWindow *Tray, HWND hWndStartButton, REFIID riid, void **ppv)
Definition: taskband.cpp:346
#define IDHK_PAGER
Definition: traywnd.cpp:57

◆ OnCtlColorBtn()

LRESULT CTrayWindow::OnCtlColorBtn ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
BOOL bHandled 
)
inline

Definition at line 2382 of file traywnd.cpp.

2383  {
2386  }
HGDIOBJ WINAPI GetStockObject(_In_ int)
static HDC
Definition: imagelist.c:92
WPARAM wParam
Definition: combotst.c:138
int WINAPI SetBkMode(_In_ HDC, _In_ int)
Definition: dc.c:1056
#define TRANSPARENT
Definition: wingdi.h:950
#define HOLLOW_BRUSH
Definition: wingdi.h:899
LONG_PTR LRESULT
Definition: windef.h:209

◆ OnDisplayChange()

LRESULT CTrayWindow::OnDisplayChange ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
BOOL bHandled 
)
inline

Definition at line 2342 of file traywnd.cpp.

2343  {
2344  /* Load the saved tray window settings */
2345  RegLoadSettings();
2346 
2347  /* Move the tray window to the right position and resize it if necessary */
2349 
2350  return TRUE;
2351  }
#define TRUE
Definition: types.h:120
VOID CheckTrayWndPosition()
Definition: traywnd.cpp:1494
VOID RegLoadSettings()
Definition: traywnd.cpp:1515

◆ OnDoExitWindows()

LRESULT CTrayWindow::OnDoExitWindows ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
BOOL bHandled 
)
inline

Definition at line 2801 of file traywnd.cpp.

2802  {
2803  /*
2804  * TWM_DOEXITWINDOWS is send by the CDesktopBrowser to us
2805  * to show the shutdown dialog. Also a WM_CLOSE message sent
2806  * by apps should show the dialog.
2807  */
2808  return DoExitWindows();
2809  }
LRESULT DoExitWindows()
Definition: traywnd.cpp:407

◆ OnEnterSizeMove()

LRESULT CTrayWindow::OnEnterSizeMove ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
BOOL bHandled 
)
inline

Definition at line 2509 of file traywnd.cpp.

2510  {
2511  InSizeMove = TRUE;
2512  IsDragging = FALSE;
2513  if (!g_TaskbarSettings.bLock)
2514  {
2515  /* Remove the clipping on multi monitor systems while dragging around */
2517  }
2518  return TRUE;
2519  }
#define TRUE
Definition: types.h:120
DWORD IsDragging
Definition: traywnd.cpp:321
DWORD InSizeMove
Definition: traywnd.cpp:320
#define FALSE
Definition: types.h:117
TaskbarSettings g_TaskbarSettings
Definition: settings.cpp:23
VOID ApplyClipping(IN BOOL Clip)
Definition: traywnd.cpp:1405

◆ OnEraseBackground()

LRESULT CTrayWindow::OnEraseBackground ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
BOOL bHandled 
)
inline

Definition at line 2329 of file traywnd.cpp.

2330  {
2331  HDC hdc = (HDC) wParam;
2332 
2333  if (!m_Theme)
2334  {
2335  bHandled = FALSE;
2336  return 0;
2337  }
2338 
2339  return EraseBackgroundWithTheme(hdc);
2340  }
static HDC
Definition: imagelist.c:92
WPARAM wParam
Definition: combotst.c:138
LRESULT EraseBackgroundWithTheme(HDC hdc)
Definition: traywnd.cpp:1992
#define FALSE
Definition: types.h:117
HTHEME m_Theme
Definition: traywnd.cpp:282
HDC hdc
Definition: main.c:9

◆ OnExitSizeMove()

LRESULT CTrayWindow::OnExitSizeMove ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
BOOL bHandled 
)
inline

Definition at line 2521 of file traywnd.cpp.

2522  {
2523  InSizeMove = FALSE;
2524  if (!g_TaskbarSettings.bLock)
2525  {
2527 
2528  /* Apply clipping */
2530  }
2531  return TRUE;
2532  }
void FitToRebar(PRECT pRect)
Definition: traywnd.cpp:1738
#define TRUE
Definition: types.h:120
#define SIZE_RESTORED
Definition: winuser.h:2485
DWORD m_Position
Definition: traywnd.cpp:293
DWORD InSizeMove
Definition: traywnd.cpp:320
#define FALSE
Definition: types.h:117
TaskbarSettings g_TaskbarSettings
Definition: settings.cpp:23
RECT m_TrayRects[4]
Definition: traywnd.cpp:299
#define WM_SIZE
Definition: winuser.h:1598
BOOL PostMessage(UINT message, WPARAM wParam=0, LPARAM lParam=0)
Definition: atlwin.h:979

◆ OnGetTaskSwitch()

LRESULT CTrayWindow::OnGetTaskSwitch ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
BOOL bHandled 
)
inline

Definition at line 2822 of file traywnd.cpp.

2823  {
2824  bHandled = TRUE;
2825  return (LRESULT)m_TaskSwitch;
2826  }
#define TRUE
Definition: types.h:120
HWND m_TaskSwitch
Definition: traywnd.cpp:288
LONG_PTR LRESULT
Definition: windef.h:209

◆ OnHotkey()

LRESULT CTrayWindow::OnHotkey ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
BOOL bHandled 
)
inline

Definition at line 2828 of file traywnd.cpp.

2829  {
2830  return HandleHotKey(wParam);
2831  }
LRESULT HandleHotKey(DWORD id)
Definition: traywnd.cpp:654
WPARAM wParam
Definition: combotst.c:138

◆ OnInitMenuPopup()

LRESULT CTrayWindow::OnInitMenuPopup ( INT  code,
WPARAM  wParam,
LPARAM  lParam,
BOOL bHandled 
)
inline

Definition at line 2985 of file traywnd.cpp.

2986  {
2987  HMENU hMenu = (HMENU)wParam;
2989  {
2993  }
2994  else
2995  {
2999  }
3000  return 0;
3001  }
#define MF_BYCOMMAND
Definition: winuser.h:202
static BOOL IsThereAnyEffectiveWindow(BOOL bMustBeInMonitor)
Definition: traywnd.cpp:111
#define ID_SHELL_CMD_CASCADE_WND
Definition: resource.h:194
WPARAM wParam
Definition: combotst.c:138
BOOL WINAPI EnableMenuItem(_In_ HMENU, _In_ UINT, _In_ UINT)
#define FALSE
Definition: types.h:117
#define MF_ENABLED
Definition: winuser.h:128
#define ID_SHELL_CMD_TILE_WND_H
Definition: resource.h:193
#define MF_GRAYED
Definition: winuser.h:129
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
Definition: ordinal.c:60
#define ID_SHELL_CMD_TILE_WND_V
Definition: resource.h:192

◆ OnMouseMove()

LRESULT CTrayWindow::OnMouseMove ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
BOOL bHandled 
)
inline

Definition at line 2931 of file traywnd.cpp.

2932  {
2934  {
2936  }
2937 
2938  return TRUE;
2939  }
#define TRUE
Definition: types.h:120
TW_STRUCKRECTS2 sr
Definition: precomp.h:209
UINT_PTR SetTimer(UINT_PTR nIDEvent, UINT nElapse, void(CALLBACK *lpfnTimer)(HWND, UINT, UINT_PTR, DWORD)=NULL)
Definition: atlwin.h:1193
#define MOUSETRACK_INTERVAL
Definition: traywnd.cpp:33
DWORD AutoHide
Definition: precomp.h:192
TaskbarSettings g_TaskbarSettings
Definition: settings.cpp:23
#define TIMER_ID_MOUSETRACK
Definition: traywnd.cpp:32
#define NULL
Definition: types.h:112

◆ OnMoving()

LRESULT CTrayWindow::OnMoving ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
BOOL bHandled 
)
inline

Definition at line 2440 of file traywnd.cpp.

2441  {
2442  POINT ptCursor;
2443  PRECT pRect = (PRECT) lParam;
2444 
2445  /* We need to ensure that an application can not accidently
2446  move the tray window (using SetWindowPos). However, we still
2447  need to be able to move the window in case the user wants to
2448  drag the tray window to another position or in case the user
2449  wants to resize the tray window. */
2450  if (!g_TaskbarSettings.bLock && GetCursorPos(&ptCursor))
2451  {
2452  IsDragging = TRUE;
2454  }
2455  else
2456  {
2457  *pRect = m_TrayRects[m_Position];
2458  }
2459  return TRUE;
2460  }
#define TRUE
Definition: types.h:120
DWORD IsDragging
Definition: traywnd.cpp:321
DWORD GetDraggingRectFromPt(IN POINT pt, OUT RECT *pRect, OUT HMONITOR *phMonitor)
Definition: traywnd.cpp:1193
DWORD m_Position
Definition: traywnd.cpp:293
BOOL WINAPI GetCursorPos(_Out_ LPPOINT)
Definition: cursoricon.c:2635
TaskbarSettings g_TaskbarSettings
Definition: settings.cpp:23
RECT m_TrayRects[4]
Definition: traywnd.cpp:299
DWORD m_DraggingPosition
Definition: traywnd.cpp:296
HMONITOR m_DraggingMonitor
Definition: traywnd.cpp:297
struct tagRECT * PRECT
LPARAM lParam
Definition: combotst.c:139

◆ OnNcCalcSize()

LRESULT CTrayWindow::OnNcCalcSize ( INT  code,
WPARAM  wParam,
LPARAM  lParam,
BOOL bHandled 
)
inline

Definition at line 2956 of file traywnd.cpp.

2957  {
2958  RECT *rc = NULL;
2959  /* Ignore WM_NCCALCSIZE if we are not themed or locked */
2961  {
2962  bHandled = FALSE;
2963  return 0;
2964  }
2965  if(!wParam)
2966  {
2967  rc = (RECT*)wParam;
2968  }
2969  else
2970  {
2972  if(prms->lppos->flags & SWP_NOSENDCHANGING)
2973  {
2974  bHandled = FALSE;
2975  return 0;
2976  }
2977  rc = &prms->rgrc[0];
2978  }
2979 
2981 
2982  return 0;
2983  }
DWORD m_Position
Definition: traywnd.cpp:293
#define SWP_NOSENDCHANGING
Definition: winuser.h:1241
WPARAM wParam
Definition: combotst.c:138
#define FALSE
Definition: types.h:117
TaskbarSettings g_TaskbarSettings
Definition: settings.cpp:23
PWINDOWPOS lppos
Definition: winuser.h:3579
UINT flags
Definition: winuser.h:3574
HTHEME m_Theme
Definition: traywnd.cpp:282
VOID AdjustSizerRect(RECT *rc, DWORD pos)
Definition: traywnd.cpp:1056
#define NULL
Definition: types.h:112
LPARAM lParam
Definition: combotst.c:139

◆ OnNcHitTest()

LRESULT CTrayWindow::OnNcHitTest ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
BOOL bHandled 
)
inline

Definition at line 2388 of file traywnd.cpp.

2389  {
2390  RECT rcClient;
2391  POINT pt;
2392 
2394  {
2395  /* The user may not be able to resize the tray window.
2396  Pretend like the window is not sizeable when the user
2397  clicks on the border. */
2398  return HTBORDER;
2399  }
2400 
2402  if (GetClientRect(&rcClient) &&
2403  (MapWindowPoints(NULL, (LPPOINT) &rcClient, 2) != 0 || GetLastError() == ERROR_SUCCESS))
2404  {
2405  pt.x = (SHORT) LOWORD(lParam);
2406  pt.y = (SHORT) HIWORD(lParam);
2407 
2408  if (PtInRect(&rcClient, pt))
2409  {
2410  /* The user is trying to drag the tray window */
2411  return HTCAPTION;
2412  }
2413 
2414  /* Depending on the position of the tray window, allow only
2415  changing the border next to the monitor working area */
2416  switch (m_Position)
2417  {
2418  case ABE_TOP:
2419  if (pt.y > rcClient.bottom)
2420  return HTBOTTOM;
2421  break;
2422  case ABE_LEFT:
2423  if (pt.x > rcClient.right)
2424  return HTRIGHT;
2425  break;
2426  case ABE_RIGHT:
2427  if (pt.x < rcClient.left)
2428  return HTLEFT;
2429  break;
2430  case ABE_BOTTOM:
2431  default:
2432  if (pt.y < rcClient.top)
2433  return HTTOP;
2434  break;
2435  }
2436  }
2437  return HTBORDER;
2438  }
#define HTTOP
Definition: winuser.h:2470
#define HTLEFT
Definition: winuser.h:2467
int MapWindowPoints(HWND hWndTo, LPPOINT lpPoint, UINT nCount) const
Definition: atlwin.h:925
#define ABE_TOP
Definition: shellapi.h:18
#define ERROR_SUCCESS
Definition: deptool.c:10
#define pt(x, y)
Definition: drawing.c:79
DWORD WINAPI GetLastError(VOID)
Definition: except.c:1040
#define HTRIGHT
Definition: winuser.h:2469
DWORD m_Position
Definition: traywnd.cpp:293
#define ABE_LEFT
Definition: shellapi.h:17
short SHORT
Definition: pedump.c:59
BOOL GetClientRect(LPRECT lpRect) const
Definition: atlwin.h:507
TaskbarSettings g_TaskbarSettings
Definition: settings.cpp:23
#define ABE_RIGHT
Definition: shellapi.h:19
#define HTBOTTOM
Definition: winuser.h:2473