+extern long wxEncodingToCodepage(wxFontEncoding encoding); // from strconv.cpp
+
+bool wxTextCtrl::StreamIn(const wxString& value, wxFontEncoding encoding)
+{
+ // we have to use EM_STREAMIN to force richedit control 2.0+ to show any
+ // text in the non default charset - otherwise it thinks it knows better
+ // than we do and always shows it in the default one
+
+ // first get the Windows code page for this encoding
+ long codepage = wxEncodingToCodepage(encoding);
+ if ( codepage == -1 )
+ {
+ // unknown encoding
+ return FALSE;
+ }
+
+ // 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"));