]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/mdi.cpp
added Freeze/Thaw implementation for Windows
[wxWidgets.git] / src / msw / mdi.cpp
index e2d239595af5897a4f8963d1a3c2650af241f19c..5869306dda4c8cdd0bc7ae0a42e3cd5f803b3654 100644 (file)
@@ -270,19 +270,20 @@ wxMDIParentFrame::~wxMDIParentFrame()
     }
 }
 
+#if wxUSE_MENUS_NATIVE
+
 void wxMDIParentFrame::InternalSetMenuBar()
 {
-//    HMENU subMenu = GetSubMenu((HMENU) m_windowMenu, 0);
-
     m_parentFrameActive = TRUE;
 
-    HMENU subMenu = (HMENU) 0;
-    if (GetWindowMenu())
-        subMenu = (HMENU) GetWindowMenu()->GetHMenu();
+    wxMenu *menu = GetWindowMenu();
+    HMENU subMenu = menu ? GetHmenuOf(menu) : 0;
 
     InsertWindowMenu(GetClientWindow(), m_hMenu, subMenu);
 }
 
+#endif // wxUSE_MENUS_NATIVE
+
 void wxMDIParentFrame::SetWindowMenu(wxMenu* menu)
 {
     if (m_windowMenu)
@@ -873,10 +874,8 @@ long wxMDIChildFrame::MSWWindowProc(WXUINT message,
             break;
 
         case WM_GETMINMAXINFO:
-            // let the default window proc calculate the size of MDI children
-            // frames because it is based on the size of the MDI client window,
-            // not on the values specified in wxWindow m_min/max variables
-            return MSWDefWindowProc(message, wParam, lParam);
+            processed = HandleGetMinMaxInfo((MINMAXINFO *)lParam);
+            break;
 
         case WM_MDIACTIVATE:
             {
@@ -1040,6 +1039,33 @@ bool wxMDIChildFrame::HandleWindowPosChanging(void *pos)
     return FALSE;
 }
 
+bool wxMDIChildFrame::HandleGetMinMaxInfo(void *mmInfo)
+{
+    MINMAXINFO *info = (MINMAXINFO *)mmInfo;
+
+    // let the default window proc calculate the size of MDI children
+    // frames because it is based on the size of the MDI client window,
+    // not on the values specified in wxWindow m_max variables
+    bool processed = MSWDefWindowProc(WM_GETMINMAXINFO, 0, (LPARAM)mmInfo) != 0;
+
+    // but allow GetSizeHints() to set the min size
+    if ( m_minWidth != -1 )
+    {
+        info->ptMinTrackSize.x = m_minWidth;
+
+        processed = TRUE;
+    }
+
+    if ( m_minHeight != -1 )
+    {
+        info->ptMinTrackSize.y = m_minHeight;
+
+        processed = TRUE;
+    }
+
+    return TRUE;
+}
+
 // ---------------------------------------------------------------------------
 // MDI specific message translation/preprocessing
 // ---------------------------------------------------------------------------