From 51ec33af31ca467d4752c1d20326b2a245a6f2dd Mon Sep 17 00:00:00 2001 From: handama <55939089+handama@users.noreply.github.com> Date: Sat, 14 Dec 2024 04:34:38 +0800 Subject: [PATCH] MiniMap dialog works as a child window now (#125) --- MissionEditor/FinalSunDlg.cpp | 12 ++++++------ MissionEditor/Houses.cpp | 2 +- MissionEditor/IsoView.cpp | 14 +++++++------- MissionEditor/MapD.cpp | 2 +- MissionEditor/MapData.cpp | 2 +- MissionEditor/MyViewFrame.cpp | 7 ++++--- MissionEditor/MyViewFrame.h | 2 +- 7 files changed, 21 insertions(+), 20 deletions(-) diff --git a/MissionEditor/FinalSunDlg.cpp b/MissionEditor/FinalSunDlg.cpp index 5552357..ab0d4f8 100644 --- a/MissionEditor/FinalSunDlg.cpp +++ b/MissionEditor/FinalSunDlg.cpp @@ -693,7 +693,7 @@ void CFinalSunDlg::UpdateDialogs(BOOL bOnlyMissionControl, BOOL bNoRepos) m_view.m_isoview->UpdateDialog(!bNoRepos); m_view.m_objectview->UpdateDialog(); - m_view.m_minimap.UpdateView(); + m_view.m_minimap->UpdateView(); if (tiles != NULL && tiledata != NULL && tiledata_count != NULL) { m_view.m_browser->m_bar.Update(); @@ -2008,7 +2008,7 @@ void CFinalSunDlg::OnFileNew() // MessageBox("Repaired houses"); m_view.m_isoview->UpdateDialog(TRUE); - m_view.m_minimap.RedrawWindow(); + m_view.m_minimap->RedrawWindow(); UpdateDialogs(); last_succeeded_operation = 11002; @@ -2204,7 +2204,7 @@ void CFinalSunDlg::UnloadAll() tutorial.Clear(); g_data.Clear(); language.Clear(); - + m_view.m_minimap.reset(); DestroyWindow(); } catch (...) { DestroyWindow(); @@ -2247,7 +2247,7 @@ void CFinalSunDlg::OnOptionsSimpleview() void CFinalSunDlg::OnOptionsShowminimap() { bMiniMapClosedByUser = FALSE; - this->m_view.m_minimap.UpdateView(); + this->m_view.m_minimap->UpdateView(); } void CFinalSunDlg::HideAllDialogs() @@ -2344,9 +2344,9 @@ void CFinalSunDlg::OnSize(UINT nType, int cx, int cy) CDialog::OnSize(nType, cx, cy); if (nType == SIZE_MINIMIZED) { - if (!bMiniMapClosedByUser) m_view.m_minimap.ShowWindow(SW_MINIMIZE); + if (!bMiniMapClosedByUser) m_view.m_minimap->ShowWindow(SW_MINIMIZE); } else if (nType == SIZE_MAXIMIZED) { - if (!bMiniMapClosedByUser) m_view.m_minimap.ShowWindow(SW_RESTORE); + if (!bMiniMapClosedByUser) m_view.m_minimap->ShowWindow(SW_RESTORE); } RecalcLayout(); diff --git a/MissionEditor/Houses.cpp b/MissionEditor/Houses.cpp index 5de0da0..8cb9d90 100644 --- a/MissionEditor/Houses.cpp +++ b/MissionEditor/Houses.cpp @@ -571,7 +571,7 @@ void CHouses::OnKillfocusColor() // and minimap Map->RedrawMinimap(); ((CFinalSunDlg*)theApp.m_pMainWnd)->m_view.m_isoview->RedrawWindow(); - ((CFinalSunDlg*)theApp.m_pMainWnd)->m_view.m_minimap.RedrawWindow(); + ((CFinalSunDlg*)theApp.m_pMainWnd)->m_view.m_minimap->RedrawWindow(); } void CHouses::OnKillfocusCredits() diff --git a/MissionEditor/IsoView.cpp b/MissionEditor/IsoView.cpp index 0df11a4..2c5a4a7 100644 --- a/MissionEditor/IsoView.cpp +++ b/MissionEditor/IsoView.cpp @@ -1143,7 +1143,7 @@ void CIsoView::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) RedrawWindow(NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW); CMyViewFrame& dlg = *(CMyViewFrame*)owner; - dlg.m_minimap.RedrawWindow(NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW); + dlg.m_minimap->RedrawWindow(NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW); } void CIsoView::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) @@ -1163,7 +1163,7 @@ void CIsoView::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) RedrawWindow(NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW); CMyViewFrame& dlg = *(CMyViewFrame*)owner; - dlg.m_minimap.RedrawWindow(NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW); + dlg.m_minimap->RedrawWindow(NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW); } /* @@ -1233,7 +1233,7 @@ void CIsoView::OnMouseMove(UINT nFlags, CPoint point) ShowCursor(TRUE); CMyViewFrame& dlg = *(CMyViewFrame*)owner; - dlg.m_minimap.RedrawWindow(NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW); + dlg.m_minimap->RedrawWindow(NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW); } else { @@ -2125,7 +2125,7 @@ void CIsoView::OnRButtonUp(UINT nFlags, CPoint point) KillTimer(11); ShowCursor(TRUE); CMyViewFrame& dlg = *(CMyViewFrame*)owner; - dlg.m_minimap.RedrawWindow(NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW); + dlg.m_minimap->RedrawWindow(NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW); } @@ -3327,7 +3327,7 @@ void CIsoView::OnLButtonUp(UINT nFlags, CPoint point) } CFinalSunDlg& dlg = *(CFinalSunDlg*)theApp.m_pMainWnd; - dlg.m_view.m_minimap.RedrawWindow(NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW); + dlg.m_view.m_minimap->RedrawWindow(NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW); m_moved = FALSE; @@ -3385,7 +3385,7 @@ void CIsoView::OnSize(UINT nType, int cx, int cy) updateFontScaled(); CMyViewFrame& dlg = *(CMyViewFrame*)owner; - dlg.m_minimap.RedrawWindow(NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW); + dlg.m_minimap->RedrawWindow(NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW); UpdateScrollRanges(); @@ -6513,7 +6513,7 @@ BOOL CIsoView::OnMouseWheel(UINT nFlags, short zDelta, CPoint ptScreen) RedrawWindow(NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW); CMyViewFrame& dlg = *(CMyViewFrame*)owner; - dlg.m_minimap.RedrawWindow(NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW); + dlg.m_minimap->RedrawWindow(NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW); return CView::OnMouseWheel(nFlags, zDelta, pt); } diff --git a/MissionEditor/MapD.cpp b/MissionEditor/MapD.cpp index 9c9281e..db6d33e 100644 --- a/MissionEditor/MapD.cpp +++ b/MissionEditor/MapD.cpp @@ -162,7 +162,7 @@ void CMapD::OnChange() ((CFinalSunDlg*)theApp.m_pMainWnd)->m_view.m_isoview->RedrawWindow(NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW); - ((CFinalSunDlg*)theApp.m_pMainWnd)->m_view.m_minimap.UpdateView(); + ((CFinalSunDlg*)theApp.m_pMainWnd)->m_view.m_minimap->UpdateView(); char c[50]; itoa(dlg.m_Width, c, 10); diff --git a/MissionEditor/MapData.cpp b/MissionEditor/MapData.cpp index 363b289..c77d2d6 100644 --- a/MissionEditor/MapData.cpp +++ b/MissionEditor/MapData.cpp @@ -1248,7 +1248,7 @@ void CMapData::Pack(BOOL bCreatePreview, BOOL bCompression) BITMAPINFO biinfo; BYTE* lpDibData; int pitch; - ((CFinalSunDlg*)theApp.m_pMainWnd)->m_view.m_minimap.DrawMinimap(&lpDibData, biinfo, pitch); + ((CFinalSunDlg*)theApp.m_pMainWnd)->m_view.m_minimap->DrawMinimap(&lpDibData, biinfo, pitch); m_mapfile.DeleteSection("PreviewPack"); m_mapfile.SetString("Preview", "Size", m_mapfile.GetString("Map", "Size")); diff --git a/MissionEditor/MyViewFrame.cpp b/MissionEditor/MyViewFrame.cpp index 91c132f..ef26452 100644 --- a/MissionEditor/MyViewFrame.cpp +++ b/MissionEditor/MyViewFrame.cpp @@ -96,9 +96,10 @@ BOOL CMyViewFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) // the minimap is not a child window right now, but it is created here though auto miniMapClass = AfxRegisterWndClass(0, m_hArrowCursor, static_cast(::GetStockObject(GRAY_BRUSH))); - m_minimap.CreateEx(0, miniMapClass, "Minimap", WS_POPUPWINDOW | WS_CAPTION | WS_VISIBLE, r, NULL, 0); - //m_minimap.Create(NULL, "Minimap", WS_OVERLAPPED) - m_minimap.UpdateView(); + m_minimap = std::make_unique(); + m_minimap->CreateEx(0, miniMapClass, "Minimap", WS_CAPTION | WS_VISIBLE | WS_CHILD, r, this, 0); + m_minimap->ModifyStyle(WS_MINIMIZEBOX | WS_MAXIMIZEBOX, 0); + m_minimap->UpdateView(); if (!m_statbar.CreateEx(this, SBARS_SIZEGRIP | SBT_TOOLTIPS)) return FALSE; diff --git a/MissionEditor/MyViewFrame.h b/MissionEditor/MyViewFrame.h index dce1a78..1f06cb6 100644 --- a/MissionEditor/MyViewFrame.h +++ b/MissionEditor/MyViewFrame.h @@ -47,7 +47,7 @@ protected: // attributes public: - CMiniMap m_minimap; + std::unique_ptr m_minimap; CStatusBar m_statbar; CViewObjects* m_objectview; CIsoView* m_isoview;