+
+ // next translate to Unicode using this code page
+ int len = ::MultiByteToWideChar(codepage, 0, value, -1, NULL, 0);
+ wxWCharBuffer wchBuf(len);
+ if ( !::MultiByteToWideChar(codepage, 0, value, -1,
+ (wchar_t *)wchBuf.data(), len) )
+ {
+ wxLogLastError(_T("MultiByteToWideChar"));
+ }
+
+ // finally, stream it in the control
+ const wchar_t *wpc = wchBuf;
+#endif // wxUSE_UNICODE_MSLU
+
+ EDITSTREAM eds;
+ wxZeroMemory(eds);
+ eds.dwCookie = (DWORD)&wpc;
+ // the cast below is needed for broken (very) old mingw32 headers
+ eds.pfnCallback = (EDITSTREAMCALLBACK)wxRichEditStreamIn;
+
+ if ( !::SendMessage(GetHwnd(), EM_STREAMIN,
+ SF_TEXT |
+ SF_UNICODE |
+ (selectionOnly ? SFF_SELECTION : 0),
+ (LPARAM)&eds) || eds.dwError )
+ {
+ wxLogLastError(_T("EM_STREAMIN"));
+
+ return FALSE;
+ }
+
+ return TRUE;