//============================================================================== LRESULT CALLBACK messageWndProc (HWND h, const UINT message, const WPARAM wParam, const LPARAM lParam) noexcept { if (h == juce_messageWindowHandle) { if (message == specialId) { // (These are trapped early in our dispatch loop, but must also be checked // here in case some 3rd-party code is running the dispatch loop). dispatchMessageFromLParam (lParam); return 0; } else if (message == broadcastId) { const ScopedPointer<String> messageString ((String*) lParam); MessageManager::getInstance()->deliverBroadcastMessage (*messageString); return 0; } else if (message == WM_COPYDATA) { const COPYDATASTRUCT* const data = reinterpret_cast <const COPYDATASTRUCT*> (lParam); if (data->dwData == broadcastId) { const String messageString (CharPointer_UTF32 ((const CharPointer_UTF32::CharType*) data->lpData), data->cbData / sizeof (CharPointer_UTF32::CharType)); PostMessage (juce_messageWindowHandle, broadcastId, 0, (LPARAM) new String (messageString)); return 0; } } } return DefWindowProc (h, message, wParam, lParam); }
static String createString (Random& r) { juce_wchar buffer[50] = { 0 }; for (int i = r.nextInt (49); --i >= 0;) { if (r.nextInt (10) == 0) { do { buffer[i] = (juce_wchar) (1 + r.nextInt (0x10ffff - 1)); } while (! CharPointer_UTF16::canRepresent (buffer[i])); } else buffer[i] = (juce_wchar) ('a' + r.nextInt (3)); } return CharPointer_UTF32 (buffer); }
static String createRandomWideCharString (Random& r) { juce_wchar buffer [50] = { 0 }; for (int i = 0; i < numElementsInArray (buffer) - 1; ++i) { if (r.nextBool()) { do { buffer[i] = (juce_wchar) (1 + r.nextInt (0x10ffff - 1)); } while (! CharPointer_UTF16::canRepresent (buffer[i])); } else buffer[i] = (juce_wchar) (1 + r.nextInt (0xff)); } return CharPointer_UTF32 (buffer); }