/* FinalSun/FinalAlert 2 Mission Editor Copyright (C) 1999-2024 Electronic Arts, Inc. Authored by Matthias Wagner This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ // MyViewFrame.cpp: Implementierungsdatei // #include "stdafx.h" #include "FinalSun.h" #include "MyViewFrame.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CMyViewFrame IMPLEMENT_DYNCREATE(CMyViewFrame, CFrameWnd) CMyViewFrame::CMyViewFrame() { m_isoview = 0; } CMyViewFrame::~CMyViewFrame() { } BEGIN_MESSAGE_MAP(CMyViewFrame, CFrameWnd) //{{AFX_MSG_MAP(CMyViewFrame) ON_WM_SYSCOMMAND() ON_WM_SIZE() ON_WM_GETMINMAXINFO() ON_WM_KEYDOWN() ON_WM_KEYUP() ON_WM_CHAR() //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // Behandlungsroutinen für Nachrichten CMyViewFrame BOOL CMyViewFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) { SIZE z; z.cx = 200; z.cy = 200; CRect r; r.right = 200; r.bottom = 200; if (!m_Splitter.CreateStatic(this, 1, 2)) return FALSE; if (!m_Splitter.CreateView(0, 0, RUNTIME_CLASS(CViewObjects), z, pContext)) return FALSE; if (!m_Splitter.CreateView(0, 1, RUNTIME_CLASS(CRightFrame), z, pContext)) return FALSE; OutputDebugString("CMyViewFrame::OnCreateClient(): windows created\n"); m_rightFrame = (CRightFrame*)m_Splitter.GetPane(0, 1); m_isoview = (CIsoView*)m_rightFrame->m_Splitter.GetPane(0, 0); m_isoview->owner = this; m_browser = (CTileSetBrowserFrame*)m_rightFrame->m_Splitter.GetPane(1, 0); m_objectview = (CViewObjects*)m_Splitter.GetPane(0, 0); // 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 = 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; return CFrameWnd::OnCreateClient(lpcs, pContext); } void CMyViewFrame::OnSysCommand(UINT nID, LPARAM lParam) { if (nID == SC_CLOSE) { // ok now just hide the window ShowWindow(SW_HIDE); return; } CFrameWnd::OnSysCommand(nID, lParam); } void CMyViewFrame::OnSize(UINT nType, int cx, int cy) { // we now check if our frame window has already created its child windows // this is true at the second OnSize // TODO: replace static static BOOL wasHere = FALSE; if (wasHere == FALSE) { wasHere = TRUE; return; } CFrameWnd::OnSize(nType, cx, cy); CStatusBarCtrl& stat = m_statbar.GetStatusBarCtrl(); m_statbar.ShowWindow(SW_SHOW); CRect sr; GetWindowRect(sr); //int Widths[]={sr.right-80,80,-1}; int Widths[] = { sr.right - sr.left - 130,-1 }; stat.SetParts(2, Widths); stat.SetSimple(FALSE); m_statbar.ShowWindow(SW_SHOW); } void CMyViewFrame::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI) { lpMMI->ptMinTrackSize.x = 260; lpMMI->ptMinTrackSize.y = 150; CFrameWnd::OnGetMinMaxInfo(lpMMI); } void CMyViewFrame::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) { m_isoview->SendMessage(WM_KEYDOWN, nChar, nFlags); // CFrameWnd::OnKeyDown(nChar, nRepCnt, nFlags); } void CMyViewFrame::PostNcDestroy() { // do not call CFrameWnd::PostNcDestroy(), as long as MyViewFrame is not on the heap! // CFrameWnd::PostNcDestroy(); } void CMyViewFrame::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags) { // TODO: Code für die Behandlungsroutine für Nachrichten hier einfügen und/oder Standard aufrufen // CFrameWnd::OnKeyUp(nChar, nRepCnt, nFlags); } void CMyViewFrame::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) { // TODO: Code für die Behandlungsroutine für Nachrichten hier einfügen und/oder Standard aufrufen // CFrameWnd::OnChar(nChar, nRepCnt, nFlags); }