2 * PROJECT: ReactOS system libraries
3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: dll\win32\stobject\stobject.cpp
5 * PURPOSE: Systray shell service object
6 * PROGRAMMERS: Robert Naumann
7 David Quintana <gigaherz@gmail.com>
11 extern const GUID CLSID_SysTray
;
15 WS_POPUP
| WS_DLGFRAME
| WS_CLIPCHILDREN
| WS_CLIPSIBLINGS
,
16 WS_EX_LEFT
| WS_EX_LTRREADING
| WS_EX_RIGHTSCROLLBAR
| WS_EX_PALETTEWINDOW
20 public CComCoClass
<CSysTray
, &CLSID_SysTray
>,
21 public CComObjectRootEx
<CComMultiThreadModelNoCS
>,
22 public CWindowImpl
<CSysTray
, CWindow
, CMessageWndClass
>,
23 public IOleCommandTarget
25 // TODO: keep icon handlers here
29 static DWORD WINAPI
s_SysTrayThreadProc(PVOID param
);
30 HRESULT
SysTrayMessageLoop();
31 HRESULT
SysTrayThreadProc();
32 HRESULT
CreateSysTrayThread();
33 HRESULT
DestroySysTrayWindow();
36 HRESULT
ShutdownIcons();
37 HRESULT
UpdateIcons();
38 HRESULT
ProcessIconMessage(UINT uMsg
, WPARAM wParam
, LPARAM lParam
);
41 HRESULT
NotifyIcon(INT code
, UINT uId
, HICON hIcon
, LPCWSTR szTip
);
43 HWND
GetHWnd() { return m_hWnd
; }
46 BOOL
ProcessWindowMessage(HWND hWnd
, UINT uMsg
, WPARAM wParam
, LPARAM lParam
, LRESULT
&lResult
, DWORD dwMsgMapID
= 0);
52 // *** IOleCommandTarget methods ***
53 virtual HRESULT STDMETHODCALLTYPE
QueryStatus(const GUID
*pguidCmdGroup
, ULONG cCmds
, OLECMD prgCmds
[], OLECMDTEXT
*pCmdText
);
54 virtual HRESULT STDMETHODCALLTYPE
Exec(const GUID
*pguidCmdGroup
, DWORD nCmdID
, DWORD nCmdexecopt
, VARIANT
*pvaIn
, VARIANT
*pvaOut
);
56 DECLARE_WND_CLASS_EX(_T("SystemTray_Main"), CS_GLOBALCLASS
, COLOR_3DFACE
)
58 DECLARE_REGISTRY_RESOURCEID(IDR_SYSTRAY
)
59 DECLARE_NOT_AGGREGATABLE(CSysTray
)
60 DECLARE_PROTECT_FINAL_CONSTRUCT()
62 BEGIN_COM_MAP(CSysTray
)
63 COM_INTERFACE_ENTRY_IID(IID_IOleCommandTarget
, IOleCommandTarget
)