summaryrefslogtreecommitdiffhomepage
path: root/Magic2/MainFrm.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Magic2/MainFrm.cpp')
-rw-r--r--Magic2/MainFrm.cpp178
1 files changed, 178 insertions, 0 deletions
diff --git a/Magic2/MainFrm.cpp b/Magic2/MainFrm.cpp
new file mode 100644
index 0000000..3d2d256
--- /dev/null
+++ b/Magic2/MainFrm.cpp
@@ -0,0 +1,178 @@
+/* Starshatter OpenSource Distribution
+ Copyright (c) 1997-2004, Destroyer Studios LLC.
+ All Rights Reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name "Destroyer Studios" nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "stdafx.h"
+#include "Magic.h"
+
+#include "MainFrm.h"
+#include "MagicView.h"
+
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#undef THIS_FILE
+static char THIS_FILE[] = __FILE__;
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// MainFrame
+
+#include "Bitmap.h"
+
+IMPLEMENT_DYNCREATE(MainFrame, CFrameWnd)
+
+BEGIN_MESSAGE_MAP(MainFrame, CFrameWnd)
+ //{{AFX_MSG_MAP(MainFrame)
+ ON_WM_CREATE()
+ ON_WM_ACTIVATEAPP()
+ ON_COMMAND(ID_VIEW_RENDER, OnRender)
+ //}}AFX_MSG_MAP
+END_MESSAGE_MAP()
+
+static UINT indicators[] =
+{
+ ID_SEPARATOR, // status line indicator
+ ID_SEPARATOR, // xy indicator
+ ID_INDICATOR_CAPS,
+ ID_INDICATOR_NUM,
+ ID_INDICATOR_SCRL,
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// MainFrame construction/destruction
+
+MainFrame* MainFrame::statframe;
+
+
+MainFrame::MainFrame()
+{
+ statframe = this;
+
+}
+
+MainFrame::~MainFrame()
+{
+ Bitmap::ClearCache();
+}
+
+BOOL MainFrame::OnWndMsg(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult)
+{
+ if (message == WM_ENTERSIZEMOVE) {
+ MagicView* magic_view = MagicView::GetInstance();
+ if (magic_view)
+ magic_view->OnEnterSizeMove();
+ }
+
+ else if (message == WM_EXITSIZEMOVE) {
+ MagicView* magic_view = MagicView::GetInstance();
+ if (magic_view)
+ magic_view->OnExitSizeMove();
+ }
+
+ return CFrameWnd::OnWndMsg(message, wParam, lParam, pResult);
+}
+
+int MainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
+{
+ if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
+ return -1;
+
+ if (!m_wndToolBar.Create(this) ||
+ !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
+ {
+ TRACE0("Failed to create toolbar\n");
+ return -1; // fail to create
+ }
+
+ if (!m_wndStatusBar.Create(this) ||
+ !m_wndStatusBar.SetIndicators(indicators,
+ sizeof(indicators)/sizeof(UINT)))
+ {
+ TRACE0("Failed to create status bar\n");
+ return -1; // fail to create
+ }
+
+ // TODO: Remove this if you don't want tool tips or a resizeable toolbar
+ m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() |
+ CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
+
+ // TODO: Delete these three lines if you don't want the toolbar to
+ // be dockable
+ m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
+ EnableDocking(CBRS_ALIGN_ANY);
+ DockControlBar(&m_wndToolBar);
+
+ return 0;
+}
+
+BOOL MainFrame::PreCreateWindow(CREATESTRUCT& cs)
+{
+ if( !CFrameWnd::PreCreateWindow(cs) )
+ return FALSE;
+ // TODO: Modify the Window class or styles here by modifying
+ // the CREATESTRUCT cs
+
+ return TRUE;
+}
+
+void MainFrame::StatusXY(const char* xy)
+{
+ statframe->m_wndStatusBar.SetPaneText(1, xy, TRUE);
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// MainFrame diagnostics
+
+#ifdef _DEBUG
+void MainFrame::AssertValid() const
+{
+ CFrameWnd::AssertValid();
+}
+
+void MainFrame::Dump(CDumpContext& dc) const
+{
+ CFrameWnd::Dump(dc);
+}
+
+#endif //_DEBUG
+
+/////////////////////////////////////////////////////////////////////////////
+// MainFrame message handlers
+
+
+void MainFrame::OnActivateApp(BOOL bActive, DWORD dwThreadID)
+{
+ ((Magic*)AfxGetApp())->SetAppActivated(bActive ? true : false);
+}
+
+void MainFrame::OnRender()
+{
+ MagicView* magic_view = MagicView::GetInstance();
+ if (magic_view)
+ magic_view->SendMessage(WM_COMMAND, ID_VIEW_RENDER);
+}