ReactOS 0.4.17-dev-966-gf06eace
precomp.h File Reference
#include <stdarg.h>
#include <tchar.h>
#include <windef.h>
#include <winbase.h>
#include <shlguid_undoc.h>
#include <shlobj.h>
#include <strsafe.h>
#include <atlbase.h>
#include <atlcom.h>
#include <atlwin.h>
#include <atlstr.h>
#include <setupapi.h>
#include <shellapi.h>
#include <wine/debug.h>
#include "resource.h"
#include "csystray.h"
Include dependency graph for precomp.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  SysTrayIconHandlers_t
 

Macros

#define WIN32_NO_STATUS
 
#define COBJMACROS
 
#define WIN32_NO_STATUS
 
#define _INC_WINDOWS
 
#define COM_NO_WINDOWS_H
 
#define NTOS_MODE_USER
 
#define ID_ICON_VOLUME   (WM_APP + 0x4CB)
 
#define ID_ICON_HOTPLUG   (WM_APP + 0x4CC)
 
#define ID_ICON_POWER   (WM_APP + 0x4CD)
 
#define ID_ICON_MOUSE   (WM_APP + 0x4CE)
 
#define POWER_SERVICE_FLAG   0x00000001
 
#define HOTPLUG_SERVICE_FLAG   0x00000002
 
#define VOLUME_SERVICE_FLAG   0x00000004
 
#define SKEYS_SERVICE_FLAG   0x20000000
 
#define FKEYS_SERVICE_FLAG   0x40000000
 
#define MOUSE_SERVICE_FLAG   0x80000000
 
#define STANDALONESERVICEMASK   0xF0000000
 
#define StickyKeys_Update(thisptr)   (void)0
 
#define FilterKeys_Update(thisptr)   (void)0
 
#define POLL_TIMER_ID   1
 
#define POWER_TIMER_ID   2
 
#define VOLUME_TIMER_ID   3
 
#define HOTPLUG_TIMER_ID   4
 
#define HOTPLUG_DEVICE_TIMER_ID   5
 

Typedefs

typedef HRESULT(STDMETHODCALLTYPE * PFNSTINIT) (_In_ CSysTray *pSysTray)
 
typedef HRESULT(STDMETHODCALLTYPE * PFNSTSHUTDOWN) (_In_ CSysTray *pSysTray)
 
typedef HRESULT(STDMETHODCALLTYPE * PFNSTUPDATE) (_In_ CSysTray *pSysTray)
 
typedef HRESULT(STDMETHODCALLTYPE * PFNSTMESSAGE) (_In_ CSysTray *pSysTray, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT &lResult)
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (stobject)
 
HRESULT STDMETHODCALLTYPE Volume_Init (_In_ CSysTray *pSysTray)
 
HRESULT STDMETHODCALLTYPE Volume_Shutdown (_In_ CSysTray *pSysTray)
 
HRESULT STDMETHODCALLTYPE Volume_Update (_In_ CSysTray *pSysTray)
 
HRESULT STDMETHODCALLTYPE Volume_Message (_In_ CSysTray *pSysTray, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT &lResult)
 
HRESULT STDMETHODCALLTYPE Hotplug_Init (_In_ CSysTray *pSysTray)
 
HRESULT STDMETHODCALLTYPE Hotplug_Shutdown (_In_ CSysTray *pSysTray)
 
HRESULT STDMETHODCALLTYPE Hotplug_Update (_In_ CSysTray *pSysTray)
 
HRESULT STDMETHODCALLTYPE Hotplug_Message (_In_ CSysTray *pSysTray, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT &lResult)
 
HRESULT STDMETHODCALLTYPE Power_Init (_In_ CSysTray *pSysTray)
 
HRESULT STDMETHODCALLTYPE Power_Shutdown (_In_ CSysTray *pSysTray)
 
HRESULT STDMETHODCALLTYPE Power_Update (_In_ CSysTray *pSysTray)
 
HRESULT STDMETHODCALLTYPE Power_Message (_In_ CSysTray *pSysTray, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT &lResult)
 
HRESULT STDMETHODCALLTYPE MouseKeys_Init (_In_ CSysTray *pSysTray)
 
HRESULT STDMETHODCALLTYPE MouseKeys_Shutdown (_In_ CSysTray *pSysTray)
 
HRESULT STDMETHODCALLTYPE MouseKeys_Update (_In_ CSysTray *pSysTray)
 
HRESULT STDMETHODCALLTYPE MouseKeys_Message (_In_ CSysTray *pSysTray, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT &lResult)
 

Variables

HINSTANCE g_hInstance
 
SysTrayIconHandlers_t g_IconHandlers []
 
const int g_NumIcons
 

Macro Definition Documentation

◆ _INC_WINDOWS

#define _INC_WINDOWS

Definition at line 10 of file precomp.h.

◆ COBJMACROS

#define COBJMACROS

Definition at line 8 of file precomp.h.

◆ COM_NO_WINDOWS_H

#define COM_NO_WINDOWS_H

Definition at line 11 of file precomp.h.

◆ FilterKeys_Update

#define FilterKeys_Update (   thisptr)    (void)0

Definition at line 89 of file precomp.h.

◆ FKEYS_SERVICE_FLAG

#define FKEYS_SERVICE_FLAG   0x40000000

Definition at line 42 of file precomp.h.

◆ HOTPLUG_DEVICE_TIMER_ID

#define HOTPLUG_DEVICE_TIMER_ID   5

Definition at line 95 of file precomp.h.

◆ HOTPLUG_SERVICE_FLAG

#define HOTPLUG_SERVICE_FLAG   0x00000002

Definition at line 39 of file precomp.h.

◆ HOTPLUG_TIMER_ID

#define HOTPLUG_TIMER_ID   4

Definition at line 94 of file precomp.h.

◆ ID_ICON_HOTPLUG

#define ID_ICON_HOTPLUG   (WM_APP + 0x4CC)

Definition at line 34 of file precomp.h.

◆ ID_ICON_MOUSE

#define ID_ICON_MOUSE   (WM_APP + 0x4CE)

Definition at line 36 of file precomp.h.

◆ ID_ICON_POWER

#define ID_ICON_POWER   (WM_APP + 0x4CD)

Definition at line 35 of file precomp.h.

◆ ID_ICON_VOLUME

#define ID_ICON_VOLUME   (WM_APP + 0x4CB)

Definition at line 33 of file precomp.h.

◆ MOUSE_SERVICE_FLAG

#define MOUSE_SERVICE_FLAG   0x80000000

Definition at line 43 of file precomp.h.

◆ NTOS_MODE_USER

#define NTOS_MODE_USER

Definition at line 12 of file precomp.h.

◆ POLL_TIMER_ID

#define POLL_TIMER_ID   1

Definition at line 91 of file precomp.h.

◆ POWER_SERVICE_FLAG

#define POWER_SERVICE_FLAG   0x00000001

Definition at line 38 of file precomp.h.

◆ POWER_TIMER_ID

#define POWER_TIMER_ID   2

Definition at line 92 of file precomp.h.

◆ SKEYS_SERVICE_FLAG

#define SKEYS_SERVICE_FLAG   0x20000000

Definition at line 41 of file precomp.h.

◆ STANDALONESERVICEMASK

#define STANDALONESERVICEMASK   0xF0000000

Definition at line 44 of file precomp.h.

◆ StickyKeys_Update

#define StickyKeys_Update (   thisptr)    (void)0

Definition at line 87 of file precomp.h.

◆ VOLUME_SERVICE_FLAG

#define VOLUME_SERVICE_FLAG   0x00000004

Definition at line 40 of file precomp.h.

◆ VOLUME_TIMER_ID

#define VOLUME_TIMER_ID   3

Definition at line 93 of file precomp.h.

◆ WIN32_NO_STATUS [1/2]

#define WIN32_NO_STATUS

Definition at line 9 of file precomp.h.

◆ WIN32_NO_STATUS [2/2]

#define WIN32_NO_STATUS

Definition at line 9 of file precomp.h.

Typedef Documentation

◆ PFNSTINIT

typedef HRESULT(STDMETHODCALLTYPE * PFNSTINIT) (_In_ CSysTray *pSysTray)

Definition at line 48 of file precomp.h.

◆ PFNSTMESSAGE

typedef HRESULT(STDMETHODCALLTYPE * PFNSTMESSAGE) (_In_ CSysTray *pSysTray, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT &lResult)

Definition at line 51 of file precomp.h.

◆ PFNSTSHUTDOWN

typedef HRESULT(STDMETHODCALLTYPE * PFNSTSHUTDOWN) (_In_ CSysTray *pSysTray)

Definition at line 49 of file precomp.h.

◆ PFNSTUPDATE

typedef HRESULT(STDMETHODCALLTYPE * PFNSTUPDATE) (_In_ CSysTray *pSysTray)

Definition at line 50 of file precomp.h.

Function Documentation

◆ Hotplug_Init()

HRESULT STDMETHODCALLTYPE Hotplug_Init ( _In_ CSysTray *  pSysTray)

Definition at line 124 of file hotplug.cpp.

125{
126 TRACE("Hotplug_Init\n");
127
130
132
133 if (g_devList.GetSize() > 0)
134 return pSysTray->NotifyIcon(NIM_ADD, ID_ICON_HOTPLUG, g_hIconHotplug, g_strHotplugTooltip);
135 else
136 return pSysTray->NotifyIcon(NIM_ADD, ID_ICON_HOTPLUG, g_hIconHotplug, g_strHotplugTooltip, NIS_HIDDEN);
137}
HINSTANCE g_hInstance
Definition: MainWindow.cpp:18
#define ID_ICON_HOTPLUG
Definition: precomp.h:34
#define IDS_HOTPLUG_REMOVE_1
Definition: resource.h:19
#define IDI_HOTPLUG_OK
Definition: resource.h:58
HRESULT EnumHotpluggedDevices(CSimpleArray< DEVINST > &devList)
Definition: hotplug.cpp:35
static HICON g_hIconHotplug
Definition: hotplug.cpp:20
CSimpleArray< DEVINST > g_devList
Definition: hotplug.cpp:18
CString g_strHotplugTooltip
Definition: hotplug.cpp:19
#define MAKEINTRESOURCE(i)
Definition: ntverrsrc.c:25
#define LoadIcon
Definition: winuser.h:5979
#define NIM_ADD
Definition: shellapi.h:94
#define TRACE(s)
Definition: solgame.cpp:4

Referenced by Hotplug_Message().

◆ Hotplug_Message()

HRESULT STDMETHODCALLTYPE Hotplug_Message ( _In_ CSysTray *  pSysTray,
UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
LRESULT &  lResult 
)

Definition at line 253 of file hotplug.cpp.

254{
255 TRACE("Hotplug_Message uMsg=%d, wParam=%x, lParam=%x\n", uMsg, wParam, lParam);
256
257 switch (uMsg)
258 {
259 case WM_USER + 220:
260 TRACE("Hotplug_Message: WM_USER+220\n");
262 {
263 if (lParam)
264 {
265 pSysTray->EnableService(HOTPLUG_SERVICE_FLAG, TRUE);
266 return Hotplug_Init(pSysTray);
267 }
268 else
269 {
270 pSysTray->EnableService(HOTPLUG_SERVICE_FLAG, FALSE);
271 return Hotplug_Shutdown(pSysTray);
272 }
273 }
274 return S_FALSE;
275
276 case WM_USER + 221:
277 TRACE("Hotplug_Message: WM_USER+221\n");
279 {
280 lResult = (LRESULT)pSysTray->IsServiceEnabled(HOTPLUG_SERVICE_FLAG);
281 return S_OK;
282 }
283 return S_FALSE;
284
285 case WM_TIMER:
287 {
288 KillTimer(pSysTray->GetHWnd(), HOTPLUG_TIMER_ID);
289 _ShowContextMenu(pSysTray);
290 }
292 {
293 KillTimer(pSysTray->GetHWnd(), HOTPLUG_DEVICE_TIMER_ID);
294 HotplugDeviceTimer(pSysTray);
295 }
296 break;
297
298 case ID_ICON_HOTPLUG:
299 switch (lParam)
300 {
301 case WM_LBUTTONDOWN:
302 SetTimer(pSysTray->GetHWnd(), HOTPLUG_TIMER_ID, GetDoubleClickTime(), NULL);
303 break;
304
305 case WM_LBUTTONUP:
306 break;
307
308 case WM_LBUTTONDBLCLK:
309 KillTimer(pSysTray->GetHWnd(), HOTPLUG_TIMER_ID);
310 _RunHotplug(pSysTray);
311 break;
312
313 case WM_RBUTTONDOWN:
314 break;
315
316 case WM_RBUTTONUP:
317 _ShowContextMenuR(pSysTray);
318 break;
319
320 case WM_RBUTTONDBLCLK:
321 break;
322
323 case WM_MOUSEMOVE:
324 break;
325 }
326 return S_OK;
327
328 case WM_DEVICECHANGE:
329 switch (wParam)
330 {
332 TRACE("WM_DEVICECHANGE : DBT_DEVNODES_CHANGED\n");
333 SetTimer(pSysTray->GetHWnd(), HOTPLUG_DEVICE_TIMER_ID, 100, NULL);
334 lResult = true;
335 break;
336
338 break;
340 break;
342 break;
344 WCHAR strInfo[128];
345 _swprintf(strInfo, L"The %wS can now be safely removed from the system.", g_strMenuSel);
346 NotifyBalloon(pSysTray, L"Safe to Remove Hardware", strInfo);
347
348 lResult = true;
349 break;
351 break;
352 }
353 return S_OK;
354
355 default:
356 TRACE("Hotplug_Message received for unknown ID %d, ignoring.\n");
357 return S_FALSE;
358 }
359
360 return S_FALSE;
361}
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
#define DBT_DEVICEREMOVEPENDING
Definition: dbt.h:15
#define DBT_DEVNODES_CHANGED
Definition: dbt.h:28
#define DBT_DEVICEQUERYREMOVE
Definition: dbt.h:13
#define DBT_DEVICEARRIVAL
Definition: dbt.h:12
#define DBT_DEVICEREMOVECOMPLETE
Definition: dbt.h:16
#define DBT_DEVICEQUERYREMOVEFAILED
Definition: dbt.h:14
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define HOTPLUG_TIMER_ID
Definition: precomp.h:94
#define HOTPLUG_SERVICE_FLAG
Definition: precomp.h:39
#define HOTPLUG_DEVICE_TIMER_ID
Definition: precomp.h:95
#define L(x)
Definition: resources.c:13
HRESULT NotifyBalloon(CSysTray *pSysTray, LPCWSTR szTitle=NULL, LPCWSTR szInfo=NULL, UINT uId=ID_ICON_HOTPLUG)
Definition: hotplug.cpp:94
HRESULT STDMETHODCALLTYPE Hotplug_Init(_In_ CSysTray *pSysTray)
Definition: hotplug.cpp:124
HRESULT STDMETHODCALLTYPE Hotplug_Shutdown(_In_ CSysTray *pSysTray)
Definition: hotplug.cpp:145
VOID HotplugDeviceTimer(_In_ CSysTray *pSysTray)
Definition: hotplug.cpp:239
static WCHAR g_strMenuSel[DISPLAY_NAME_LEN]
Definition: hotplug.cpp:21
static void _ShowContextMenuR(CSysTray *pSysTray)
Definition: hotplug.cpp:213
static void _RunHotplug(CSysTray *pSysTray)
Definition: hotplug.cpp:155
static void _ShowContextMenu(CSysTray *pSysTray)
Definition: hotplug.cpp:160
#define S_OK
Definition: intsafe.h:52
#define _swprintf(buf, format,...)
Definition: sprintf.c:56
#define LRESULT
Definition: ole.h:14
short WCHAR
Definition: pedump.c:58
#define WM_LBUTTONDBLCLK
Definition: winuser.h:1806
#define WM_RBUTTONUP
Definition: winuser.h:1808
#define WM_RBUTTONDBLCLK
Definition: winuser.h:1809
#define WM_MOUSEMOVE
Definition: winuser.h:1803
#define WM_LBUTTONDOWN
Definition: winuser.h:1804
#define WM_DEVICECHANGE
Definition: winuser.h:1839
UINT WINAPI GetDoubleClickTime(void)
Definition: ntwrapper.h:314
UINT_PTR WINAPI SetTimer(_In_opt_ HWND, _In_ UINT_PTR, _In_ UINT, _In_opt_ TIMERPROC)
#define WM_RBUTTONDOWN
Definition: winuser.h:1807
#define WM_TIMER
Definition: winuser.h:1770
#define WM_LBUTTONUP
Definition: winuser.h:1805
#define WM_USER
Definition: winuser.h:1923
BOOL WINAPI KillTimer(_In_opt_ HWND, _In_ UINT_PTR)
#define S_FALSE
Definition: winerror.h:3451

◆ Hotplug_Shutdown()

HRESULT STDMETHODCALLTYPE Hotplug_Shutdown ( _In_ CSysTray *  pSysTray)

Definition at line 145 of file hotplug.cpp.

146{
147 TRACE("Hotplug_Shutdown\n");
148
151
152 return pSysTray->NotifyIcon(NIM_DELETE, ID_ICON_HOTPLUG, NULL, NULL);
153}
BOOL WINAPI DestroyIcon(_In_ HICON)
Definition: cursoricon.c:2422
#define NIM_DELETE
Definition: shellapi.h:96

Referenced by Hotplug_Message().

◆ Hotplug_Update()

HRESULT STDMETHODCALLTYPE Hotplug_Update ( _In_ CSysTray *  pSysTray)

Definition at line 139 of file hotplug.cpp.

140{
141 TRACE("Hotplug_Update\n");
142 return S_OK;
143}

◆ MouseKeys_Init()

HRESULT STDMETHODCALLTYPE MouseKeys_Init ( _In_ CSysTray *  pSysTray)

Definition at line 15 of file mouse.cpp.

16{
17 TRACE("MouseKeys_Init!\n");
18
19 return MouseKeys_Update(pSysTray);
20}
HRESULT STDMETHODCALLTYPE MouseKeys_Update(_In_ CSysTray *pSysTray)
Definition: mouse.cpp:43

◆ MouseKeys_Message()

HRESULT STDMETHODCALLTYPE MouseKeys_Message ( _In_ CSysTray *  pSysTray,
UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
LRESULT &  lResult 
)

Definition at line 127 of file mouse.cpp.

128{
129 switch (uMsg)
130 {
131 case ID_ICON_MOUSE:
132 switch (lParam)
133 {
134 case WM_LBUTTONDBLCLK:
135 case WM_RBUTTONDBLCLK:
136 pSysTray->RunAccessCpl(",,4");
137 return S_OK;
138 }
139 break;
140 }
141 return S_FALSE;
142}
#define ID_ICON_MOUSE
Definition: precomp.h:36

◆ MouseKeys_Shutdown()

HRESULT STDMETHODCALLTYPE MouseKeys_Shutdown ( _In_ CSysTray *  pSysTray)

Definition at line 23 of file mouse.cpp.

24{
25 TRACE("MouseKeys_Shutdown!\n");
26
27 if (g_MkStateIcon)
28 {
31 }
32
33 if (g_MkState)
34 {
35 g_MkState = 0;
36 pSysTray->NotifyIcon(NIM_DELETE, ID_ICON_MOUSE, g_MkStateIcon, L"MouseKeys");
37 }
38
39 return S_OK;
40}
static UINT g_MkState
Definition: mouse.cpp:11
static HICON g_MkStateIcon
Definition: mouse.cpp:12

◆ MouseKeys_Update()

HRESULT STDMETHODCALLTYPE MouseKeys_Update ( _In_ CSysTray *  pSysTray)

Definition at line 43 of file mouse.cpp.

44{
45 TRACE("MouseKeys_Update!\n");
46
47 g_Mk.cbSize = sizeof(g_Mk);
49
50 UINT state = 0;
52 {
54 {
56 {
57 case 0:
58 default:
60 break;
63 break;
67 break;
70 break;
74 break;
77 break;
83 break;
87 break;
91 break;
92 }
93 }
94 else
95 {
97 }
98 }
99
100 UINT uId = NIM_MODIFY;
101 if (state != g_MkState)
102 {
103 if (g_MkStateIcon)
104 {
107 }
108
109 if (g_MkState == 0)
110 uId = NIM_ADD;
111
113 if (g_MkState)
114 {
116 }
117 }
118
119 if (g_MkState == 0)
120 {
121 uId = NIM_DELETE;
122 }
123
124 return pSysTray->NotifyIcon(uId, ID_ICON_MOUSE, g_MkStateIcon, L"MouseKeys");
125}
static int state
Definition: maze.c:121
static MOUSEKEYS g_Mk
Definition: mouse.cpp:10
#define IDI_MOUSE_R_DOWN
Definition: resource.h:65
#define IDI_MOUSE_R_ACTIVE
Definition: resource.h:64
#define IDI_MOUSE_R_ACTIVE_L_DOWN
Definition: resource.h:69
#define IDI_MOUSE_L_ACTIVE_R_DOWN
Definition: resource.h:68
#define IDI_MOUSE_L_DOWN
Definition: resource.h:63
#define IDI_MOUSE_NOBTN
Definition: resource.h:61
#define IDI_MOUSE_L_ACTIVE
Definition: resource.h:62
#define IDI_MOUSE_LR_DOWN
Definition: resource.h:67
#define IDI_MOUSE_DISABLED
Definition: resource.h:60
#define IDI_MOUSE_LR_ACTIVE
Definition: resource.h:66
unsigned int UINT
Definition: sysinfo.c:13
#define MKF_RIGHTBUTTONSEL
Definition: winuser.h:2189
#define MKF_MOUSEMODE
Definition: winuser.h:2190
#define SPI_GETMOUSEKEYS
Definition: winuser.h:1414
#define MKF_LEFTBUTTONDOWN
Definition: winuser.h:2186
#define MKF_LEFTBUTTONSEL
Definition: winuser.h:2188
#define MKF_INDICATOR
Definition: winuser.h:2183
BOOL WINAPI SystemParametersInfoW(_In_ UINT uiAction, _In_ UINT uiParam, _Inout_opt_ PVOID pvParam, _In_ UINT fWinIni)
#define MKF_RIGHTBUTTONDOWN
Definition: winuser.h:2187
#define MKF_MOUSEKEYSON
Definition: winuser.h:2178
#define NIM_MODIFY
Definition: shellapi.h:95
UINT cbSize
Definition: winuser.h:3519
DWORD dwFlags
Definition: winuser.h:3520

Referenced by MouseKeys_Init(), and CSysTray::ProcessWindowMessage().

◆ Power_Init()

HRESULT STDMETHODCALLTYPE Power_Init ( _In_ CSysTray *  pSysTray)

Definition at line 149 of file power.cpp.

150{
151 TRACE("Power_Init\n");
153
154 return pSysTray->NotifyIcon(NIM_ADD, ID_ICON_POWER, g_hIconBattery, g_strTooltip);
155}
static HICON g_hIconBattery
Definition: power.cpp:30
CString g_strTooltip
Definition: power.cpp:29
static HICON DynamicLoadIcon(HINSTANCE hinst)
Definition: power.cpp:79
#define ID_ICON_POWER
Definition: precomp.h:35

Referenced by Power_Message().

◆ Power_Message()

HRESULT STDMETHODCALLTYPE Power_Message ( _In_ CSysTray *  pSysTray,
UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
LRESULT &  lResult 
)

Definition at line 264 of file power.cpp.

265{
266 TRACE("Power_Message uMsg=%d, wParam=%x, lParam=%x\n", uMsg, wParam, lParam);
267
268 switch (uMsg)
269 {
270 case WM_USER + 220:
271 TRACE("Power_Message: WM_USER+220\n");
273 {
274 if (lParam)
275 {
276 pSysTray->EnableService(POWER_SERVICE_FLAG, TRUE);
277 return Power_Init(pSysTray);
278 }
279 else
280 {
281 pSysTray->EnableService(POWER_SERVICE_FLAG, FALSE);
282 return Power_Shutdown(pSysTray);
283 }
284 }
285 return S_FALSE;
286
287 case WM_USER + 221:
288 TRACE("Power_Message: WM_USER+221\n");
290 {
291 lResult = (LRESULT)pSysTray->IsServiceEnabled(POWER_SERVICE_FLAG);
292 return S_OK;
293 }
294 return S_FALSE;
295
296 case WM_TIMER:
297 if (wParam == POWER_TIMER_ID)
298 {
299 KillTimer(pSysTray->GetHWnd(), POWER_TIMER_ID);
301 }
302 break;
303
304 case ID_ICON_POWER:
305 Power_Update(pSysTray);
306
307 switch (lParam)
308 {
309 case WM_LBUTTONDOWN:
310 SetTimer(pSysTray->GetHWnd(), POWER_TIMER_ID, GetDoubleClickTime(), NULL);
311 break;
312
313 case WM_LBUTTONUP:
314 break;
315
316 case WM_LBUTTONDBLCLK:
317 KillTimer(pSysTray->GetHWnd(), POWER_TIMER_ID);
318 _RunPower();
319 break;
320
321 case WM_RBUTTONDOWN:
322 break;
323
324 case WM_RBUTTONUP:
325 _ShowContextMenu(pSysTray);
326 break;
327
328 case WM_RBUTTONDBLCLK:
329 break;
330
331 case WM_MOUSEMOVE:
332 break;
333 }
334 return S_OK;
335
336 default:
337 TRACE("Power_Message received for unknown ID %d, ignoring.\n");
338 return S_FALSE;
339 }
340
341 return S_FALSE;
342}
static void _RunPower()
Definition: power.cpp:172
HRESULT STDMETHODCALLTYPE Power_Init(_In_ CSysTray *pSysTray)
Definition: power.cpp:149
HRESULT STDMETHODCALLTYPE Power_Shutdown(_In_ CSysTray *pSysTray)
Definition: power.cpp:165
HRESULT STDMETHODCALLTYPE Power_Update(_In_ CSysTray *pSysTray)
Definition: power.cpp:157
static void _ShowContextMenu(CSysTray *pSysTray)
Definition: power.cpp:177
static VOID ShowPowerSchemesPopupMenu(CSysTray *pSysTray)
Definition: power.cpp:229
#define POWER_TIMER_ID
Definition: precomp.h:92
#define POWER_SERVICE_FLAG
Definition: precomp.h:38

◆ Power_Shutdown()

HRESULT STDMETHODCALLTYPE Power_Shutdown ( _In_ CSysTray *  pSysTray)

Definition at line 165 of file power.cpp.

166{
167 TRACE("Power_Shutdown\n");
168
169 return pSysTray->NotifyIcon(NIM_DELETE, ID_ICON_POWER, NULL, NULL);
170}

Referenced by Power_Message().

◆ Power_Update()

HRESULT STDMETHODCALLTYPE Power_Update ( _In_ CSysTray *  pSysTray)

Definition at line 157 of file power.cpp.

158{
159 TRACE("Power_Update\n");
161
162 return pSysTray->NotifyIcon(NIM_MODIFY, ID_ICON_POWER, g_hIconBattery, g_strTooltip);
163}

Referenced by Power_Message().

◆ Volume_Init()

HRESULT STDMETHODCALLTYPE Volume_Init ( _In_ CSysTray *  pSysTray)

Definition at line 129 of file volume.cpp.

130{
131 HRESULT hr;
132 WCHAR strTooltip[128];
133
134 TRACE("Volume_Init\n");
135
136 if (!g_hMixer)
137 {
138 hr = Volume_FindMixerControl(pSysTray);
139 if (FAILED(hr))
140 return hr;
141
142 g_mmDeviceChange = RegisterWindowMessageW(L"winmm_devicechange");
143 }
144
147
149
150 HICON icon;
151 if (g_IsMute)
152 icon = g_hIconMute;
153 else
154 icon = g_hIconVolume;
155
156 LoadStringW(g_hInstance, IDS_VOL_VOLUME, strTooltip, _countof(strTooltip));
157 return pSysTray->NotifyIcon(NIM_ADD, ID_ICON_VOLUME, icon, strTooltip);
158}
HRESULT hr
Definition: delayimp.cpp:582
#define ID_ICON_VOLUME
Definition: precomp.h:38
#define IDS_VOL_VOLUME
Definition: resource.h:33
#define IDI_VOLMUTE
Definition: resource.h:31
#define IDI_VOLUME
Definition: resource.h:30
#define FAILED(hr)
Definition: intsafe.h:51
static HICON
Definition: imagelist.c:80
UINT WINAPI RegisterWindowMessageW(_In_ LPCWSTR)
#define LoadStringW
Definition: utils.h:64
#define _countof(array)
Definition: sndvol32.h:70
HRESULT Volume_IsMute()
Definition: volume.cpp:105
static BOOL g_IsMute
Definition: volume.cpp:22
UINT g_mmDeviceChange
Definition: volume.cpp:20
HICON g_hIconVolume
Definition: volume.cpp:13
static HRESULT __stdcall Volume_FindMixerControl(CSysTray *pSysTray)
Definition: volume.cpp:24
HMIXER g_hMixer
Definition: volume.cpp:16
HICON g_hIconMute
Definition: volume.cpp:14

Referenced by Volume_Message().

◆ Volume_Message()

HRESULT STDMETHODCALLTYPE Volume_Message ( _In_ CSysTray *  pSysTray,
UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
LRESULT &  lResult 
)

Definition at line 253 of file volume.cpp.

254{
255 if (uMsg == g_mmDeviceChange)
256 return Volume_OnDeviceChange(pSysTray, wParam, lParam);
257
258 switch (uMsg)
259 {
260 case WM_USER + 220:
261 TRACE("Volume_Message: WM_USER+220\n");
263 {
264 if (lParam)
265 {
266 pSysTray->EnableService(VOLUME_SERVICE_FLAG, TRUE);
267 return Volume_Init(pSysTray);
268 }
269 else
270 {
271 pSysTray->EnableService(VOLUME_SERVICE_FLAG, FALSE);
272 return Volume_Shutdown(pSysTray);
273 }
274 }
275 return S_FALSE;
276
277 case WM_USER + 221:
278 TRACE("Volume_Message: WM_USER+221\n");
280 {
281 lResult = (LRESULT)pSysTray->IsServiceEnabled(VOLUME_SERVICE_FLAG);
282 return S_OK;
283 }
284 return S_FALSE;
285
286 case WM_TIMER:
287 if (wParam == VOLUME_TIMER_ID)
288 {
289 KillTimer(pSysTray->GetHWnd(), VOLUME_TIMER_ID);
291 }
292 break;
293
294 case ID_ICON_VOLUME:
295 TRACE("Volume_Message uMsg=%d, w=%x, l=%x\n", uMsg, wParam, lParam);
296
297 switch (lParam)
298 {
299 case WM_LBUTTONDOWN:
300 SetTimer(pSysTray->GetHWnd(), VOLUME_TIMER_ID, GetDoubleClickTime(), NULL);
301 break;
302
303 case WM_LBUTTONUP:
304 break;
305
306 case WM_LBUTTONDBLCLK:
307 KillTimer(pSysTray->GetHWnd(), VOLUME_TIMER_ID);
309 break;
310
311 case WM_RBUTTONDOWN:
312 break;
313
314 case WM_RBUTTONUP:
315 _ShowContextMenu(pSysTray);
316 break;
317
318 case WM_RBUTTONDBLCLK:
319 break;
320
321 case WM_MOUSEMOVE:
322 break;
323 }
324 return S_OK;
325
327 Volume_Update(pSysTray);
328 return S_OK;
329
330 default:
331 TRACE("Volume_Message received for unknown ID %d, ignoring.\n");
332 return S_FALSE;
333 }
334
335 return S_FALSE;
336}
#define VOLUME_TIMER_ID
Definition: precomp.h:93
#define VOLUME_SERVICE_FLAG
Definition: precomp.h:40
#define MM_MIXM_LINE_CHANGE
Definition: mmsystem.h:82
HRESULT STDMETHODCALLTYPE Volume_Init(_In_ CSysTray *pSysTray)
Definition: volume.cpp:129
HRESULT Volume_OnDeviceChange(_In_ CSysTray *pSysTray, WPARAM wParam, LPARAM lParam)
Definition: volume.cpp:199
static void _RunVolume(BOOL bTray)
Definition: volume.cpp:204
HRESULT STDMETHODCALLTYPE Volume_Shutdown(_In_ CSysTray *pSysTray)
Definition: volume.cpp:192
static void _ShowContextMenu(CSysTray *pSysTray)
Definition: volume.cpp:219
HRESULT STDMETHODCALLTYPE Volume_Update(_In_ CSysTray *pSysTray)
Definition: volume.cpp:160

◆ Volume_Shutdown()

HRESULT STDMETHODCALLTYPE Volume_Shutdown ( _In_ CSysTray *  pSysTray)

Definition at line 192 of file volume.cpp.

193{
194 TRACE("Volume_Shutdown\n");
195
196 return pSysTray->NotifyIcon(NIM_DELETE, ID_ICON_VOLUME, NULL, NULL);
197}

Referenced by Volume_Message().

◆ Volume_Update()

HRESULT STDMETHODCALLTYPE Volume_Update ( _In_ CSysTray *  pSysTray)

Definition at line 160 of file volume.cpp.

161{
162 BOOL PrevState;
163
164 TRACE("Volume_Update\n");
165
166 PrevState = g_IsMute;
168
169 if (PrevState != g_IsMute)
170 {
171 WCHAR strTooltip[128];
172 HICON icon;
173 if (g_IsMute)
174 {
175 icon = g_hIconMute;
176 LoadStringW(g_hInstance, IDS_VOL_MUTED, strTooltip, _countof(strTooltip));
177 }
178 else
179 {
180 icon = g_hIconVolume;
181 LoadStringW(g_hInstance, IDS_VOL_VOLUME, strTooltip, _countof(strTooltip));
182 }
183
184 return pSysTray->NotifyIcon(NIM_MODIFY, ID_ICON_VOLUME, icon, strTooltip);
185 }
186 else
187 {
188 return S_OK;
189 }
190}
#define IDS_VOL_MUTED
Definition: resource.h:37
unsigned int BOOL
Definition: ntddk_ex.h:94

Referenced by Volume_Message().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( stobject  )

Variable Documentation

◆ g_hInstance

HINSTANCE g_hInstance
extern

Definition at line 18 of file MainWindow.cpp.

◆ g_IconHandlers

◆ g_NumIcons