- int msAns = MessageBox(hWnd, (LPCTSTR)m_message.c_str(),
- (LPCTSTR)m_caption.c_str(), msStyle);
- int ans = wxOK;
+ // per MSDN documentation for MessageBox() we can prefix the message with 2
+ // right-to-left mark characters to tell the function to use RTL layout
+ // (unfortunately this only works in Unicode builds)
+ wxString message = GetFullMessage();
+#if wxUSE_UNICODE
+ if ( wxTheApp->GetLayoutDirection() == wxLayout_RightToLeft )
+ {
+ // NB: not all compilers support \u escapes
+ static const wchar_t wchRLM = 0x200f;
+ message.Prepend(wxString(wchRLM, 2));
+ }
+#endif // wxUSE_UNICODE
+
+ // do show the dialog
+ int msAns = MessageBox(hWnd, message, m_caption, msStyle);
+ int ans;