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
;
34 static DWORD WINAPI
s_SysTrayThreadProc(PVOID param
);
35 HRESULT
SysTrayMessageLoop();
36 HRESULT
SysTrayThreadProc();
37 HRESULT
CreateSysTrayThread();
38 HRESULT
DestroySysTrayWindow();
41 HRESULT
ShutdownIcons();
42 HRESULT
UpdateIcons();
43 HRESULT
ProcessIconMessage(UINT uMsg
, WPARAM wParam
, LPARAM lParam
, LRESULT
&lResult
);
45 HRESULT
InitNetShell();
46 HRESULT
ShutdownNetShell();
48 VOID
GetServicesEnabled();
51 HRESULT
NotifyIcon(INT code
, UINT uId
, HICON hIcon
, LPCWSTR szTip
, DWORD dwstate
= 0);
53 HWND
GetHWnd() { return m_hWnd
; }
55 VOID
EnableService(DWORD dwServiceFlag
, BOOL bEnable
);
56 BOOL
IsServiceEnabled(DWORD dwServiceFlag
);
59 BOOL
ProcessWindowMessage(HWND hWnd
, UINT uMsg
, WPARAM wParam
, LPARAM lParam
, LRESULT
&lResult
, DWORD dwMsgMapID
= 0);
65 // *** IOleCommandTarget methods ***
66 virtual HRESULT STDMETHODCALLTYPE
QueryStatus(const GUID
*pguidCmdGroup
, ULONG cCmds
, OLECMD prgCmds
[], OLECMDTEXT
*pCmdText
);
67 virtual HRESULT STDMETHODCALLTYPE
Exec(const GUID
*pguidCmdGroup
, DWORD nCmdID
, DWORD nCmdexecopt
, VARIANT
*pvaIn
, VARIANT
*pvaOut
);
69 DECLARE_WND_CLASS_EX(_T("SystemTray_Main"), CS_GLOBALCLASS
, COLOR_3DFACE
)
71 DECLARE_REGISTRY_RESOURCEID(IDR_SYSTRAY
)
72 DECLARE_NOT_AGGREGATABLE(CSysTray
)
73 DECLARE_PROTECT_FINAL_CONSTRUCT()
75 BEGIN_COM_MAP(CSysTray
)
76 COM_INTERFACE_ENTRY_IID(IID_IOleCommandTarget
, IOleCommandTarget
)