]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/mdi.cpp
Applied patch [ 597700 ] Fix proposal for wxJoystick under MSW
[wxWidgets.git] / src / msw / mdi.cpp
index b5744e22cee977d7d0f3302ae8d9d97c8daa8042..41e02c6b1be7917f66ae86cc48aa3c844367d17e 100644 (file)
@@ -43,6 +43,8 @@
     #include "wx/log.h"
 #endif
 
+#if wxUSE_MDI_ARCHITECTURE && !defined(__WXUNIVERSAL__)
+
 #include "wx/mdi.h"
 #include "wx/msw/private.h"
 
@@ -82,6 +84,7 @@ static const int IDM_WINDOWCASCADE = 4002;
 static const int IDM_WINDOWICONS = 4003;
 static const int IDM_WINDOWNEXT = 4004;
 static const int IDM_WINDOWTILEVERT = 4005;
+static const int IDM_WINDOWPREV = 4006;
 
 // This range gives a maximum of 500 MDI children. Should be enough :-)
 static const int wxFIRST_MDI_CHILD = 4100;
@@ -188,6 +191,7 @@ bool wxMDIParentFrame::Create(wxWindow *parent,
       m_windowMenu->AppendSeparator();
       m_windowMenu->Append(IDM_WINDOWICONS, _("&Arrange Icons"));
       m_windowMenu->Append(IDM_WINDOWNEXT, _("&Next"));
+      m_windowMenu->Append(IDM_WINDOWPREV, _("&Previous"));
   }
 
   m_parentFrameActive = TRUE;
@@ -206,8 +210,8 @@ bool wxMDIParentFrame::Create(wxWindow *parent,
   else
     m_windowId = NewControlId();
 
-  long exflags;
-  long msflags = MSWGetCreateWindowFlags(&exflags);
+  WXDWORD exflags;
+  WXDWORD msflags = MSWGetCreateWindowFlags(&exflags);
 
   if ( !wxWindow::MSWCreate(wxMDIFrameClassName,
                             title,
@@ -245,7 +249,7 @@ wxMDIParentFrame::~wxMDIParentFrame()
     if ( m_hMenu )
     {
         ::DestroyMenu((HMENU)m_hMenu);
-        m_hMenu = NULL;
+        m_hMenu = (WXHMENU)NULL;
     }
 
     if ( m_clientWindow )
@@ -500,6 +504,7 @@ bool wxMDIParentFrame::HandleCommand(WXWORD id, WXWORD cmd, WXHWND hwnd)
 
     // is it one of standard MDI commands?
     WXWPARAM wParam = 0;
+    WXLPARAM lParam = 0;
     int msg;
     switch ( id )
     {
@@ -525,6 +530,12 @@ bool wxMDIParentFrame::HandleCommand(WXWORD id, WXWORD cmd, WXHWND hwnd)
 
         case IDM_WINDOWNEXT:
             msg = WM_MDINEXT;
+            lParam = 0;         // next child
+            break;
+
+        case IDM_WINDOWPREV:
+            msg = WM_MDINEXT;
+            lParam = 1;         // previous child
             break;
 
         default:
@@ -533,7 +544,7 @@ bool wxMDIParentFrame::HandleCommand(WXWORD id, WXWORD cmd, WXHWND hwnd)
 
     if ( msg )
     {
-        ::SendMessage(GetWinHwnd(GetClientWindow()), msg, wParam, 0);
+        ::SendMessage(GetWinHwnd(GetClientWindow()), msg, wParam, lParam);
 
         return TRUE;
     }
@@ -1034,17 +1045,20 @@ bool wxMDIChildFrame::HandleGetMinMaxInfo(void *mmInfo)
     // not on the values specified in wxWindow m_max variables
     bool processed = MSWDefWindowProc(WM_GETMINMAXINFO, 0, (LPARAM)mmInfo) != 0;
 
+    int minWidth = GetMinWidth(),
+        minHeight = GetMinHeight();
+
     // but allow GetSizeHints() to set the min size
-    if ( m_minWidth != -1 )
+    if ( minWidth != -1 )
     {
-        info->ptMinTrackSize.x = m_minWidth;
+        info->ptMinTrackSize.x = minWidth;
 
         processed = TRUE;
     }
 
-    if ( m_minHeight != -1 )
+    if ( minHeight != -1 )
     {
-        info->ptMinTrackSize.y = m_minHeight;
+        info->ptMinTrackSize.y = minHeight;
 
         processed = TRUE;
     }
@@ -1375,3 +1389,7 @@ static void UnpackMDIActivate(WXWPARAM wParam, WXLPARAM lParam,
     *hwndDeact = (WXHWND)HIWORD(lParam);
 #endif // Win32/Win16
 }
+
+#endif
+// wxUSE_MDI_ARCHITECTURE && !defined(__WXUNIVERSAL__)
+