+
+ // 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;
+#else
+ const wchar_t *wpc = value.c_str();
+#endif
+
+ 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 | SFF_SELECTION,
+ (LPARAM)&eds) || eds.dwError )
+ {
+ wxLogLastError(_T("EM_STREAMIN"));
+
+ return FALSE;
+ }
+
+ return TRUE;