#include "wx/frame.h"
#include "wx/app.h"
#include "wx/settings.h"
+#include "wx/intl.h"
+#include "wx/log.h"
#endif
#include "wx/msw/private.h"
{
if (show)
{
- m_hwndOldFocus = (WXHWND)::GetFocus();
+ // find the top level window which had focus before - we will restore
+ // focus to it later
+ m_hwndOldFocus = 0;
+ for ( HWND hwnd = ::GetFocus(); hwnd; hwnd = ::GetParent(hwnd) )
+ {
+ m_hwndOldFocus = (WXHWND)hwnd;
+ }
if (m_modalShowing)
{
Refresh();
#endif
}
+
+// ---------------------------------------------------------------------------
+// dialog window proc
+// ---------------------------------------------------------------------------
+
+long wxDialog::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam)
+{
+ long rc = 0;
+ bool processed = FALSE;
+
+ switch ( message )
+ {
+ case WM_CLOSE:
+ // if we can't close, tell the system that we processed the
+ // message - otherwise it would close us
+ processed = !Close();
+ break;
+ }
+
+ if ( !processed )
+ rc = wxWindow::MSWWindowProc(message, wParam, lParam);
+
+ return rc;
+}