/*********************************************************** * WindowMud - Window Mud Server * * File: MainFrm.cpp * * Usage: AppWizard generated * * * * No warranty is given or implied. * * There is no license associated with this code. * * There are no restrictions on the use of this code. * * This code may be used in any way the reader wishes. * * No credit or credits are given and none are required. * * The reader may take this code and claim they wrote it. * ************************************************************/ /*********************************************************** * Includes * ************************************************************/ #include "stdafx.h" #include "WindowMud.h" #include "MainFrm.h" #include "Config.h" /*********************************************************** * Globals * ************************************************************/ bool MenuControlStartGameEnabled = true; bool MenuControlStopGameEnabled = false; extern void BigDog(); ///////////////////////////////////////////////////////////////////////////// // CMainFrame IMPLEMENT_DYNAMIC(CMainFrame, CMDIFrameWnd) BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd) //{{AFX_MSG_MAP(CMainFrame) ON_WM_CREATE() ON_COMMAND(ID_CONTROL_START_GAME, OnControlStartGame) ON_UPDATE_COMMAND_UI(ID_CONTROL_START_GAME, OnUpdateControlStartGame) ON_COMMAND(ID_CONTROL_STOP_GAME, OnControlStopGame) ON_UPDATE_COMMAND_UI(ID_CONTROL_STOP_GAME, OnUpdateControlStopGame) //}}AFX_MSG_MAP END_MESSAGE_MAP() static UINT indicators[] = { ID_SEPARATOR, // status line indicator ID_INDICATOR_CAPS, ID_INDICATOR_NUM, ID_INDICATOR_SCRL, }; ///////////////////////////////////////////////////////////////////////////// // CMainFrame construction/destruction CMainFrame::CMainFrame() { // TODO: add member initialization code here } CMainFrame::~CMainFrame() { } int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1) return -1; if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) || !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: 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 CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { if( !CMDIFrameWnd::PreCreateWindow(cs) ) return FALSE; // TODO: Modify the Window class or styles here by modifying // the CREATESTRUCT cs return TRUE; } ///////////////////////////////////////////////////////////////////////////// // CMainFrame diagnostics #ifdef _DEBUG void CMainFrame::AssertValid() const { CMDIFrameWnd::AssertValid(); } void CMainFrame::Dump(CDumpContext& dc) const { CMDIFrameWnd::Dump(dc); } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // CMainFrame message handlers /*********************************************************** * Code to start BigDog as a separate thread * ************************************************************/ UINT CMainFrame::StartBigDog(LPVOID param) { int AfxMsgBox; THREADSTRUCT *ts = (THREADSTRUCT*)param; AfxMsgBox = AfxMessageBox("Click OK to START the WindowMud Server", MB_OKCANCEL); if (AfxMsgBox == IDOK) { MenuControlStartGameEnabled = false; MenuControlStopGameEnabled = true; BigDog(); AfxMessageBox("The WindowMud Server has Stopped"); MenuControlStartGameEnabled = true; MenuControlStopGameEnabled = false; } else if (AfxMsgBox == IDCANCEL) { MenuControlStartGameEnabled = true; MenuControlStopGameEnabled = false; AfxMessageBox("You pressed CANCEL, the WindowMud Server was NOT started"); } AfxEndThread(0); return 1; } /*********************************************************** * OnControlStartGame - Menu: Control->Start * ************************************************************/ void CMainFrame::OnControlStartGame() { THREADSTRUCT *_param = new THREADSTRUCT; _param->_this = this; AfxBeginThread (StartBigDog, _param); } /*********************************************************** * OnUpdateControlStartGame * ************************************************************/ void CMainFrame::OnUpdateControlStartGame(CCmdUI *pCmdUI) { pCmdUI->Enable(MenuControlStartGameEnabled); } /*********************************************************** * OnControlStopGame - Menu: Control->Stop * ************************************************************/ void CMainFrame::OnControlStopGame() { CString GoGoGoFileName; CString StopItFileName; GoGoGoFileName = CONTROL_DIR; GoGoGoFileName += "GoGoGo"; StopItFileName = CONTROL_DIR; StopItFileName += "StopIt"; CFile::Rename(GoGoGoFileName, StopItFileName); } /*********************************************************** * OnUpdateControlStopGame * ************************************************************/ void CMainFrame::OnUpdateControlStopGame(CCmdUI* pCmdUI) { pCmdUI->Enable(MenuControlStopGameEnabled); }