25 #ifndef JUCE_WIN32_HIDDENMESSAGEWINDOW_H_INCLUDED 26 #define JUCE_WIN32_HIDDENMESSAGEWINDOW_H_INCLUDED 34 String className (
"JUCE_");
37 HMODULE moduleHandle = (HMODULE) Process::getCurrentModuleInstanceHandle();
39 WNDCLASSEX wc = { 0 };
40 wc.cbSize =
sizeof (wc);
41 wc.lpfnWndProc = wndProc;
43 wc.hInstance = moduleHandle;
46 atom = RegisterClassEx (&wc);
49 hwnd = CreateWindow (getClassNameFromAtom(), messageWindowName,
50 0, 0, 0, 0, 0, 0, 0, moduleHandle, 0);
57 UnregisterClass (getClassNameFromAtom(), 0);
66 LPCTSTR getClassNameFromAtom()
noexcept {
return (LPCTSTR) MAKELONG (atom, 0); }
75 return GetWindowLongPtr (hwnd, GWLP_USERDATA) == getImprobableWindowNumber();
80 SetWindowLongPtr (hwnd, GWLP_USERDATA, isJuceWindow ? getImprobableWindowNumber() : 0);
84 static LONG_PTR getImprobableWindowNumber()
noexcept 98 SetWindowLongPtr (
messageWindow.getHWND(), GWLP_USERDATA, (LONG_PTR)
this);
103 virtual void systemDeviceChanged() = 0;
115 static LRESULT CALLBACK deviceChangeEventCallback (HWND h,
const UINT message,
116 const WPARAM wParam,
const LPARAM lParam)
118 if (message == WM_DEVICECHANGE
121 || wParam == 0x0007 ))
124 ->triggerAsyncDeviceChangeCallback();
127 return DefWindowProc (h, message, wParam, lParam);
130 void timerCallback()
override 133 systemDeviceChanged();
137 #endif // JUCE_WIN32_HIDDENMESSAGEWINDOW_H_INCLUDED HWND getHWND() const noexcept
Definition: juce_win32_HiddenMessageWindow.h:60
static String toHexString(int number)
Definition: juce_String.cpp:1925
Definition: juce_win32_HiddenMessageWindow.h:92
#define noexcept
Definition: juce_CompilerSupport.h:141
Definition: juce_String.h:43
static int64 getHighResolutionTicks() noexcept
Definition: juce_android_SystemStats.cpp:293
ScopedPointer< HiddenMessageWindow > messageWindow
Definition: juce_win32_Messaging.cpp:37
void triggerAsyncDeviceChangeCallback()
Definition: juce_win32_HiddenMessageWindow.h:105
~HiddenMessageWindow()
Definition: juce_win32_HiddenMessageWindow.h:54
static void setAsJUCEWindow(HWND hwnd, bool isJuceWindow) noexcept
Definition: juce_win32_HiddenMessageWindow.h:78
DeviceChangeDetector(const wchar_t *const name)
Definition: juce_win32_HiddenMessageWindow.h:95
static bool isJUCEWindow(HWND hwnd) noexcept
Definition: juce_win32_HiddenMessageWindow.h:73
const TCHAR messageWindowName[]
Definition: juce_win32_Messaging.cpp:36
static Random & getSystemRandom() noexcept
Definition: juce_Random.cpp:64
HiddenMessageWindow(const TCHAR *const messageWindowName, WNDPROC wndProc)
Definition: juce_win32_HiddenMessageWindow.h:32
const wchar_t * toWideCharPointer() const
Definition: juce_String.cpp:2066
Definition: juce_win32_HiddenMessageWindow.h:70
virtual ~DeviceChangeDetector()
Definition: juce_win32_HiddenMessageWindow.h:101
Definition: juce_Timer.h:52
Definition: juce_win32_HiddenMessageWindow.h:29
int64 nextInt64() noexcept
Definition: juce_Random.cpp:89