// MainFrm.cpp : implementation of the CMainFrame class // // This is a part of the Microsoft Foundation Classes C++ library. // Copyright (C) 1997-1998 Microsoft Corporation // All rights reserved. // // This source code is only intended as a supplement to the // Microsoft Foundation Classes Reference and related // electronic documentation provided with the library. // See these sources for detailed information regarding the // Microsoft Foundation Classes product. #include "stdafx.h" #include "HttpSvr.h" #include "MainFrm.h" #include "ReqSock.h" #include "HttpDoc.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CMainFrame IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd) BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) //{{AFX_MSG_MAP(CMainFrame) ON_WM_CREATE() ON_WM_DESTROY() ON_WM_TIMER() //}}AFX_MSG_MAP ON_UPDATE_COMMAND_UI(ID_INDICATOR_UPTIME, OnUpdateUpTime) #ifdef IMPL_CGI ON_MESSAGE(WSM_CGIDONE, OnCGIDone) #endif IMPL_CGI END_MESSAGE_MAP() static UINT indicators[] = { ID_SEPARATOR, // status line indicator ID_INDICATOR_UPTIME, }; ///////////////////////////////////////////////////////////////////////////// // CMainFrame construction/destruction CMainFrame::CMainFrame() { } CMainFrame::~CMainFrame() { } int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CFrameWnd::OnCreate(lpCreateStruct) == -1) return -1; 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 } // start the uptime counter.... CalcUpTime(); // kick off the uptime update timer.... m_uTimer = SetTimer( 1, 30000, NULL ); return 0; } BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { // TODO: Modify the Window class or styles here by modifying // the CREATESTRUCT cs return CFrameWnd::PreCreateWindow(cs); } ///////////////////////////////////////////////////////////////////////////// // CMainFrame diagnostics #ifdef _DEBUG void CMainFrame::AssertValid() const { CFrameWnd::AssertValid(); } void CMainFrame::Dump(CDumpContext& dc) const { CFrameWnd::Dump(dc); } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // CMainFrame message handlers void CMainFrame::OnUpdateUpTime(CCmdUI* pCmdUI) { pCmdUI->Enable(); } void CMainFrame::OnDestroy() { CFrameWnd::OnDestroy(); if ( m_uTimer ) KillTimer( m_uTimer ); } void CMainFrame::OnTimer(UINT nIDEvent) { CalcUpTime(); CFrameWnd::OnTimer(nIDEvent); } void CMainFrame::CalcUpTime() { CString strUpTime; CHttpSvrDoc* pDoc = (CHttpSvrDoc*)GetActiveDocument(); // only canculate if we have a doc and it's listening.... if ( pDoc && pDoc->m_pListen ) { CTime timeNow = CTime::GetCurrentTime(); // calculate uptime and set the status bar.... CTimeSpan upTime = timeNow - pDoc->m_timeStarted; UINT uFmt = upTime.GetDays() > 0 ? IDS_UPTIME_DAYS : IDS_UPTIME_DAY; strUpTime = upTime.Format( uFmt ); } else strUpTime.Format( IDS_UPTIME_START ); m_wndStatusBar.SetPaneText( 1, strUpTime, TRUE ); } #ifdef IMPL_CGI LRESULT CMainFrame::OnCGIDone( WPARAM, LPARAM lParam ) { CRequestSocket* pReqSock = (CRequestSocket*)lParam; pReqSock->CGIDone(); return 0; } #endif // IMPL_CGI