-#pragma once
+#ifndef _STOBJECT_PRECOMP_H_
+#define _STOBJECT_PRECOMP_H_
#define WIN32_NO_STATUS
#include <stdarg.h>
#include <windef.h>
#include <winbase.h>
-#include <winreg.h>
-#include <winuser.h>
-#include <wincon.h>
-#include <ddeml.h>
#include <shlguid_undoc.h>
-#include <shlwapi.h>
#include <shlobj.h>
-#include <shlobj_undoc.h>
-#include <shlwapi_undoc.h>
-#include <tchar.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 <wine/unicode.h>
+WINE_DEFAULT_DEBUG_CHANNEL(stobject);
#include "resource.h"
extern HINSTANCE g_hInstance;
-#define ID_ICON_VOLUME (WM_APP + 0x4CB)
+#define ID_ICON_VOLUME (WM_APP + 0x4CB)
+#define ID_ICON_HOTPLUG (WM_APP + 0x4CC)
+#define ID_ICON_POWER (WM_APP + 0x4CD)
+
+#define GET_X_LPARAM(lp) ((int)(short)LOWORD(lp))
+#define GET_Y_LPARAM(lp) ((int)(short)HIWORD(lp))
#include "csystray.h"
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);
+typedef HRESULT(STDMETHODCALLTYPE * PFNSTMESSAGE) (_In_ CSysTray * pSysTray, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT &lResult);
struct SysTrayIconHandlers_t
{
extern HRESULT STDMETHODCALLTYPE Volume_Init(_In_ CSysTray * pSysTray);
extern HRESULT STDMETHODCALLTYPE Volume_Shutdown(_In_ CSysTray * pSysTray);
extern HRESULT STDMETHODCALLTYPE Volume_Update(_In_ CSysTray * pSysTray);
-extern HRESULT STDMETHODCALLTYPE Volume_Message(_In_ CSysTray * pSysTray, UINT uMsg, WPARAM wParam, LPARAM lParam);
-
-/* --------------- Utils ------------------------------ */
-
-static __inline ULONG
-Win32DbgPrint(const char *filename, int line, const char *lpFormat, ...)
-{
- char szMsg[512];
- char *szMsgStart;
- const char *fname;
- va_list vl;
- ULONG uRet;
-
- fname = strrchr(filename, '\\');
- if (fname == NULL)
- {
- fname = strrchr(filename, '/');
- }
-
- if (fname == NULL)
- fname = filename;
- else
- fname++;
-
- szMsgStart = szMsg + sprintf(szMsg, "[%10lu] %s:%d: ", GetTickCount(), fname, line);
-
- va_start(vl, lpFormat);
- uRet = (ULONG) vsprintf(szMsgStart, lpFormat, vl);
- va_end(vl);
-
- OutputDebugStringA(szMsg);
+extern HRESULT STDMETHODCALLTYPE Volume_Message(_In_ CSysTray * pSysTray, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT &lResult);
- return uRet;
-}
+extern HRESULT STDMETHODCALLTYPE Hotplug_Init(_In_ CSysTray * pSysTray);
+extern HRESULT STDMETHODCALLTYPE Hotplug_Shutdown(_In_ CSysTray * pSysTray);
+extern HRESULT STDMETHODCALLTYPE Hotplug_Update(_In_ CSysTray * pSysTray);
+extern HRESULT STDMETHODCALLTYPE Hotplug_Message(_In_ CSysTray * pSysTray, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT &lResult);
-#define DbgPrint(fmt, ...) \
- Win32DbgPrint(__FILE__, __LINE__, fmt, ##__VA_ARGS__)
+extern HRESULT STDMETHODCALLTYPE Power_Init(_In_ CSysTray * pSysTray);
+extern HRESULT STDMETHODCALLTYPE Power_Shutdown(_In_ CSysTray * pSysTray);
+extern HRESULT STDMETHODCALLTYPE Power_Update(_In_ CSysTray * pSysTray);
+extern HRESULT STDMETHODCALLTYPE Power_Message(_In_ CSysTray * pSysTray, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT &lResult);
-#if 1
-#define FAILED_UNEXPECTEDLY(hr) (FAILED(hr) && (DbgPrint("Unexpected failure %08x.\n", hr), TRUE))
-#else
-#define FAILED_UNEXPECTEDLY(hr) FAILED(hr)
-#endif
+#define POWER_TIMER_ID 2
+#define VOLUME_TIMER_ID 3
+#define HOTPLUG_TIMER_ID 4
+#endif /* _STOBJECT_PRECOMP_H_ */