OSDN Git Service

Apply the patch below:
authorsdottaka <sdottaka@sourceforge.net>
Sun, 5 Oct 2014 11:50:15 +0000 (20:50 +0900)
committersdottaka <sdottaka@sourceforge.net>
Sun, 5 Oct 2014 11:50:15 +0000 (20:50 +0900)
[Fix for MFC 8.0 MDI Maximizing Child Window bug on Vista]
https://groups.google.com/forum/#!topic/microsoft.public.vc.mfc/iajCdW5DzTM

--HG--
branch : stable

Src/ChildFrm.cpp
Src/ChildFrm.h
Src/DirFrame.cpp
Src/DirFrame.h
Src/HexMergeFrm.cpp
Src/HexMergeFrm.h
Src/ImgMergeFrm.cpp
Src/ImgMergeFrm.h
Src/OpenFrm.cpp
Src/OpenFrm.h

index d5c3126..fc9f195 100644 (file)
@@ -67,6 +67,7 @@ BEGIN_MESSAGE_MAP(CChildFrame, CMDIChildWnd)
        ON_WM_CLOSE()
        ON_WM_MDIACTIVATE()
        ON_WM_TIMER()
+       ON_WM_GETMINMAXINFO()
        ON_UPDATE_COMMAND_UI(ID_VIEW_DETAIL_BAR, OnUpdateControlBarMenu)
        ON_COMMAND_EX(ID_VIEW_DETAIL_BAR, OnBarCheck)
        ON_UPDATE_COMMAND_UI(ID_VIEW_LOCATION_BAR, OnUpdateControlBarMenu)
@@ -709,6 +710,17 @@ void CChildFrame::OnTimer(UINT_PTR nIDEvent)
        CMDIChildWnd::OnTimer(nIDEvent);
 }
 
+void CChildFrame::OnGetMinMaxInfo(MINMAXINFO* lpMMI)
+{
+       CMDIChildWnd::OnGetMinMaxInfo(lpMMI);
+       // [Fix for MFC 8.0 MDI Maximizing Child Window bug on Vista]
+       // https://groups.google.com/forum/#!topic/microsoft.public.vc.mfc/iajCdW5DzTM
+#if _MFC_VER >= 0x0800
+       lpMMI->ptMaxTrackSize.x = max(lpMMI->ptMaxTrackSize.x, lpMMI->ptMaxSize.x);
+       lpMMI->ptMaxTrackSize.y = max(lpMMI->ptMaxTrackSize.y, lpMMI->ptMaxSize.y);
+#endif
+}
+
 void CChildFrame::OnMDIActivate(BOOL bActivate, CWnd* pActivateWnd, CWnd* pDeactivateWnd)
 {
        CMDIChildWnd::OnMDIActivate(bActivate, pActivateWnd, pDeactivateWnd);
index aa8b442..a20ab16 100644 (file)
@@ -136,6 +136,7 @@ private:
        afx_msg LRESULT OnStorePaneSizes(WPARAM wParam, LPARAM lParam);
        afx_msg void OnSize(UINT nType, int cx, int cy);
        afx_msg void OnIdleUpdateCmdUI();
+       afx_msg void OnGetMinMaxInfo(MINMAXINFO* lpMMI);
        //}}AFX_MSG
        DECLARE_MESSAGE_MAP()
 };
index d2fd7ac..fee1813 100644 (file)
@@ -98,6 +98,7 @@ BEGIN_MESSAGE_MAP(CDirFrame, CMDIChildWnd)
        ON_WM_CLOSE()
        ON_WM_SIZE()
        ON_WM_MDIACTIVATE()
+       ON_WM_GETMINMAXINFO()
        //}}AFX_MSG_MAP
 END_MESSAGE_MAP()
 
@@ -292,3 +293,14 @@ void CDirFrame::OnSize(UINT nType, int cx, int cy)
        
        m_wndFilePathBar.Resize();
 }
+
+void CDirFrame::OnGetMinMaxInfo(MINMAXINFO* lpMMI)
+{
+       CMDIChildWnd::OnGetMinMaxInfo(lpMMI);
+       // [Fix for MFC 8.0 MDI Maximizing Child Window bug on Vista]
+       // https://groups.google.com/forum/#!topic/microsoft.public.vc.mfc/iajCdW5DzTM
+#if _MFC_VER >= 0x0800
+       lpMMI->ptMaxTrackSize.x = max(lpMMI->ptMaxTrackSize.x, lpMMI->ptMaxSize.x);
+       lpMMI->ptMaxTrackSize.y = max(lpMMI->ptMaxTrackSize.y, lpMMI->ptMaxSize.y);
+#endif
+}
index 04d9663..14c3e7c 100644 (file)
@@ -79,6 +79,7 @@ protected:
        afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
        afx_msg void OnClose();
        afx_msg void OnSize(UINT nType, int cx, int cy);
+       afx_msg void OnGetMinMaxInfo(MINMAXINFO* lpMMI);
        //}}AFX_MSG
        DECLARE_MESSAGE_MAP()
 };
index ea15f39..8aba13a 100644 (file)
@@ -51,6 +51,7 @@ BEGIN_MESSAGE_MAP(CHexMergeFrame, CMDIChildWnd)
        ON_WM_CREATE()
        ON_WM_CLOSE()
        ON_WM_SIZE()
+       ON_WM_GETMINMAXINFO()
        ON_MESSAGE_VOID(WM_IDLEUPDATECMDUI, OnIdleUpdateCmdUI)
        ON_UPDATE_COMMAND_UI(ID_VIEW_DETAIL_BAR, OnUpdateControlBarMenu)
        ON_COMMAND_EX(ID_VIEW_DETAIL_BAR, OnBarCheck)
@@ -322,6 +323,17 @@ void CHexMergeFrame::OnSize(UINT nType, int cx, int cy)
        UpdateHeaderSizes();
 }
 
+void CHexMergeFrame::OnGetMinMaxInfo(MINMAXINFO* lpMMI)
+{
+       CMDIChildWnd::OnGetMinMaxInfo(lpMMI);
+       // [Fix for MFC 8.0 MDI Maximizing Child Window bug on Vista]
+       // https://groups.google.com/forum/#!topic/microsoft.public.vc.mfc/iajCdW5DzTM
+#if _MFC_VER >= 0x0800
+       lpMMI->ptMaxTrackSize.x = max(lpMMI->ptMaxTrackSize.x, lpMMI->ptMaxSize.x);
+       lpMMI->ptMaxTrackSize.y = max(lpMMI->ptMaxTrackSize.y, lpMMI->ptMaxSize.y);
+#endif
+}
+
 /// update splitting position for panels 1/2 and headerbar and statusbar 
 void CHexMergeFrame::UpdateHeaderSizes()
 {
index 97c8889..4598a5f 100644 (file)
@@ -91,6 +91,7 @@ private:
        afx_msg void OnSize(UINT nType, int cx, int cy);
        afx_msg void OnIdleUpdateCmdUI();
        afx_msg LRESULT OnStorePaneSizes(WPARAM wParam, LPARAM lParam);
+       afx_msg void OnGetMinMaxInfo(MINMAXINFO* lpMMI);
        //}}AFX_MSG
        DECLARE_MESSAGE_MAP()
 };
index 3f249e4..65b6328 100644 (file)
@@ -65,6 +65,7 @@ BEGIN_MESSAGE_MAP(CImgMergeFrame, CMDIChildWnd)
        ON_WM_CLOSE()
        ON_WM_MDIACTIVATE()
        ON_WM_SIZE()
+       ON_WM_GETMINMAXINFO()
        ON_COMMAND(ID_FILE_SAVE, OnFileSave)
        ON_UPDATE_COMMAND_UI(ID_FILE_SAVE, OnUpdateFileSave)
        ON_COMMAND(ID_FILE_SAVE_LEFT, OnFileSaveLeft)
@@ -1117,6 +1118,17 @@ void CImgMergeFrame::OnSize(UINT nType, int cx, int cy)
        }
 }
 
+void CImgMergeFrame::OnGetMinMaxInfo(MINMAXINFO* lpMMI)
+{
+       CMDIChildWnd::OnGetMinMaxInfo(lpMMI);
+       // [Fix for MFC 8.0 MDI Maximizing Child Window bug on Vista]
+       // https://groups.google.com/forum/#!topic/microsoft.public.vc.mfc/iajCdW5DzTM
+#if _MFC_VER >= 0x0800
+       lpMMI->ptMaxTrackSize.x = max(lpMMI->ptMaxTrackSize.x, lpMMI->ptMaxSize.x);
+       lpMMI->ptMaxTrackSize.y = max(lpMMI->ptMaxTrackSize.y, lpMMI->ptMaxSize.y);
+#endif
+}
+
 /**
  * @brief Synchronize control and status bar placements with splitter position,
  * update mod indicators, synchronize scrollbars
index 727e032..bc78084 100644 (file)
@@ -120,6 +120,7 @@ private:
 
        //{{AFX_MSG(CImgMergeFrame)
        afx_msg void OnMDIActivate(BOOL bActivate, CWnd* pActivateWnd, CWnd* pDeactivateWnd);
+       afx_msg void OnGetMinMaxInfo(MINMAXINFO* lpMMI);
        afx_msg void OnClose();
        afx_msg void OnFileSave();
        afx_msg void OnUpdateFileSave(CCmdUI* pCmdUI);
index e38ea7e..7bfdf5f 100644 (file)
@@ -16,6 +16,7 @@ IMPLEMENT_DYNCREATE(COpenFrame, CMDIChildWnd)
 BEGIN_MESSAGE_MAP(COpenFrame, CMDIChildWnd)
        //{{AFX_MSG_MAP(CMainFrame)
        ON_WM_PAINT()
+       ON_WM_GETMINMAXINFO()
        //}}AFX_MSG_MAP
 END_MESSAGE_MAP()
 
@@ -132,6 +133,17 @@ void COpenFrame::OnPaint()
    CMDIChildWnd::OnPaint();
 }
 
+void COpenFrame::OnGetMinMaxInfo(MINMAXINFO* lpMMI)
+{
+       CMDIChildWnd::OnGetMinMaxInfo(lpMMI);
+       // [Fix for MFC 8.0 MDI Maximizing Child Window bug on Vista]
+       // https://groups.google.com/forum/#!topic/microsoft.public.vc.mfc/iajCdW5DzTM
+#if _MFC_VER >= 0x0800
+       lpMMI->ptMaxTrackSize.x = max(lpMMI->ptMaxTrackSize.x, lpMMI->ptMaxSize.x);
+       lpMMI->ptMaxTrackSize.y = max(lpMMI->ptMaxTrackSize.y, lpMMI->ptMaxSize.y);
+#endif
+}
+
 /**
  * @brief Handle translation of default messages on the status bar
  */
index dab5384..13dfa1f 100644 (file)
@@ -46,6 +46,7 @@ public:
 protected:
        //{{AFX_MSG(COpenFrame)
        afx_msg void OnPaint(); // override required to paint rectangles.
+       afx_msg void OnGetMinMaxInfo(MINMAXINFO* lpMMI);
        //}}AFX_MSG
        DECLARE_MESSAGE_MAP()
 };