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>
13 extern const GUID CLSID_SysTray
;
17 WS_POPUP
| WS_DLGFRAME
| WS_CLIPCHILDREN
| WS_CLIPSIBLINGS
,
18 WS_EX_LEFT
| WS_EX_LTRREADING
| WS_EX_RIGHTSCROLLBAR
| WS_EX_PALETTEWINDOW
22 public CComCoClass
<CSysTray
, &CLSID_SysTray
>,
23 public CComObjectRootEx
<CComMultiThreadModelNoCS
>,
24 public CWindowImpl
<CSysTray
, CWindow
, CMessageWndClass
>,
25 public IOleCommandTarget
27 CComPtr
<IOleCommandTarget
> pctNetShell
;
29 // TODO: keep icon handlers here
31 DWORD dwServicesEnabled
;
33 UINT wm_DESTROYWINDOW
;
35 static DWORD WINAPI
s_SysTrayThreadProc(PVOID param
);
36 HRESULT
SysTrayMessageLoop();
37 HRESULT
SysTrayThreadProc();
38 HRESULT
CreateSysTrayThread();
39 HRESULT
DestroySysTrayWindow();
42 HRESULT
ShutdownIcons();
43 HRESULT
UpdateIcons();
44 HRESULT
ProcessIconMessage(UINT uMsg
, WPARAM wParam
, LPARAM lParam
, LRESULT
&lResult
);
46 HRESULT
InitNetShell();
47 HRESULT
ShutdownNetShell();
49 VOID
GetServicesEnabled();
52 HRESULT
NotifyIcon(INT code
, UINT uId
, HICON hIcon
, LPCWSTR szTip
, DWORD dwstate
= 0);
54 HWND
GetHWnd() { return m_hWnd
; }
56 VOID
EnableService(DWORD dwServiceFlag
, BOOL bEnable
);
57 BOOL
IsServiceEnabled(DWORD dwServiceFlag
);
60 BOOL
ProcessWindowMessage(HWND hWnd
, UINT uMsg
, WPARAM wParam
, LPARAM lParam
, LRESULT
&lResult
, DWORD dwMsgMapID
= 0);
66 // *** IOleCommandTarget methods ***
67 virtual HRESULT STDMETHODCALLTYPE
QueryStatus(const GUID
*pguidCmdGroup
, ULONG cCmds
, OLECMD prgCmds
[], OLECMDTEXT
*pCmdText
);
68 virtual HRESULT STDMETHODCALLTYPE
Exec(const GUID
*pguidCmdGroup
, DWORD nCmdID
, DWORD nCmdexecopt
, VARIANT
*pvaIn
, VARIANT
*pvaOut
);
70 DECLARE_WND_CLASS_EX(_T("SystemTray_Main"), CS_GLOBALCLASS
, COLOR_3DFACE
)
72 DECLARE_REGISTRY_RESOURCEID(IDR_SYSTRAY
)
73 DECLARE_NOT_AGGREGATABLE(CSysTray
)
74 DECLARE_PROTECT_FINAL_CONSTRUCT()
76 BEGIN_COM_MAP(CSysTray
)
77 COM_INTERFACE_ENTRY_IID(IID_IOleCommandTarget
, IOleCommandTarget
)