+    wxString title;
+    if ( wxTheApp )
+        title = wxTheApp->GetAppDisplayName();
+    else // Use some title to avoid default "Error"
+        title = _("Message");
+
+    ::MessageBox(NULL, str.t_str(), title.t_str(), MB_ICONINFORMATION | MB_OK);
+#else // !__WINDOWS__
+    // TODO: use the native message box for the other ports too
+    wxMessageOutputStderr::Output(str);
+#endif // __WINDOWS__/!__WINDOWS__
+}
+
+// ----------------------------------------------------------------------------
+// wxMessageOutputStderr
+// ----------------------------------------------------------------------------
+
+wxString wxMessageOutputStderr::AppendLineFeedIfNeeded(const wxString& str)
+{
+    wxString strLF(str);
+    if ( strLF.empty() || *strLF.rbegin() != '\n' )
+        strLF += '\n';
+
+    return strLF;
+}
+
+void wxMessageOutputStderr::Output(const wxString& str)
+{
+    const wxString strWithLF = AppendLineFeedIfNeeded(str);
+    const wxWX2MBbuf buf = strWithLF.mb_str();
+
+    if ( buf )
+        fprintf(m_fp, "%s", (const char*) buf);
+    else // print at least something
+        fprintf(m_fp, "%s", (const char*) strWithLF.ToAscii());
+
+    fflush(m_fp);
+}