2 * PROJECT: ReactOS system libraries
3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: dll/shellext/stobject/csystray.h
5 * PURPOSE: Systray shell service object
6 * PROGRAMMERS: Robert Naumann
7 * David Quintana <gigaherz@gmail.com>
8 * Shriraj Sawant a.k.a SR13 <sr.official@hotmail.com>
12 extern const GUID CLSID_SysTray
;
16 WS_POPUP
| WS_DLGFRAME
| WS_CLIPCHILDREN
| WS_CLIPSIBLINGS
,
17 WS_EX_LEFT
| WS_EX_LTRREADING
| WS_EX_RIGHTSCROLLBAR
| WS_EX_PALETTEWINDOW
21 public CComCoClass
<CSysTray
, &CLSID_SysTray
>,
22 public CComObjectRootEx
<CComMultiThreadModelNoCS
>,
23 public CWindowImpl
<CSysTray
, CWindow
, CMessageWndClass
>,
24 public IOleCommandTarget
26 CComPtr
<IOleCommandTarget
> pctNetShell
;
28 // TODO: keep icon handlers here
32 static DWORD WINAPI
s_SysTrayThreadProc(PVOID param
);
33 HRESULT
SysTrayMessageLoop();
34 HRESULT
SysTrayThreadProc();
35 HRESULT
CreateSysTrayThread();
36 HRESULT
DestroySysTrayWindow();
39 HRESULT
ShutdownIcons();
40 HRESULT
UpdateIcons();
41 HRESULT
ProcessIconMessage(UINT uMsg
, WPARAM wParam
, LPARAM lParam
, LRESULT
&lResult
);
43 HRESULT
InitNetShell();
44 HRESULT
ShutdownNetShell();
47 HRESULT
NotifyIcon(INT code
, UINT uId
, HICON hIcon
, LPCWSTR szTip
, DWORD dwstate
= 0);
49 HWND
GetHWnd() { return m_hWnd
; }
52 BOOL
ProcessWindowMessage(HWND hWnd
, UINT uMsg
, WPARAM wParam
, LPARAM lParam
, LRESULT
&lResult
, DWORD dwMsgMapID
= 0);
58 // *** IOleCommandTarget methods ***
59 virtual HRESULT STDMETHODCALLTYPE
QueryStatus(const GUID
*pguidCmdGroup
, ULONG cCmds
, OLECMD prgCmds
[], OLECMDTEXT
*pCmdText
);
60 virtual HRESULT STDMETHODCALLTYPE
Exec(const GUID
*pguidCmdGroup
, DWORD nCmdID
, DWORD nCmdexecopt
, VARIANT
*pvaIn
, VARIANT
*pvaOut
);
62 DECLARE_WND_CLASS_EX(_T("SystemTray_Main"), CS_GLOBALCLASS
, COLOR_3DFACE
)
64 DECLARE_REGISTRY_RESOURCEID(IDR_SYSTRAY
)
65 DECLARE_NOT_AGGREGATABLE(CSysTray
)
66 DECLARE_PROTECT_FINAL_CONSTRUCT()
68 BEGIN_COM_MAP(CSysTray
)
69 COM_INTERFACE_ENTRY_IID(IID_IOleCommandTarget
, IOleCommandTarget
)