MAINFRM.CPP
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:3k
源码类别:

Windows编程

开发平台:

Visual C++

  1. // MainFrm.cpp : implementation of the CMainFrame class
  2. //
  3. // This is a part of the Microsoft Foundation Classes C++ library.
  4. // Copyright (C) 1997-1998 Microsoft Corporation
  5. // All rights reserved.
  6. //
  7. // This source code is only intended as a supplement to the
  8. // Microsoft Foundation Classes Reference and related
  9. // electronic documentation provided with the library.
  10. // See these sources for detailed information regarding the
  11. // Microsoft Foundation Classes product.
  12. #include "stdafx.h"
  13. #include "HttpSvr.h"
  14. #include "MainFrm.h"
  15. #include "ReqSock.h"
  16. #include "HttpDoc.h"
  17. #ifdef _DEBUG
  18. #define new DEBUG_NEW
  19. #undef THIS_FILE
  20. static char THIS_FILE[] = __FILE__;
  21. #endif
  22. /////////////////////////////////////////////////////////////////////////////
  23. // CMainFrame
  24. IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)
  25. BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
  26. //{{AFX_MSG_MAP(CMainFrame)
  27. ON_WM_CREATE()
  28. ON_WM_DESTROY()
  29. ON_WM_TIMER()
  30. //}}AFX_MSG_MAP
  31. ON_UPDATE_COMMAND_UI(ID_INDICATOR_UPTIME, OnUpdateUpTime)
  32. #ifdef IMPL_CGI
  33. ON_MESSAGE(WSM_CGIDONE, OnCGIDone)
  34. #endif IMPL_CGI
  35. END_MESSAGE_MAP()
  36. static UINT indicators[] =
  37. {
  38. ID_SEPARATOR,           // status line indicator
  39. ID_INDICATOR_UPTIME,
  40. };
  41. /////////////////////////////////////////////////////////////////////////////
  42. // CMainFrame construction/destruction
  43. CMainFrame::CMainFrame()
  44. {
  45. }
  46. CMainFrame::~CMainFrame()
  47. {
  48. }
  49. int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
  50. {
  51. if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
  52. return -1;
  53. if (!m_wndStatusBar.Create(this) ||
  54. !m_wndStatusBar.SetIndicators(indicators,
  55.   sizeof(indicators)/sizeof(UINT)))
  56. {
  57. TRACE0("Failed to create status barn");
  58. return -1;      // fail to create
  59. }
  60. // start the uptime counter....
  61. CalcUpTime();
  62. // kick off the uptime update timer....
  63. m_uTimer = SetTimer( 1, 30000, NULL );
  64. return 0;
  65. }
  66. BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
  67. {
  68. // TODO: Modify the Window class or styles here by modifying
  69. //  the CREATESTRUCT cs
  70. return CFrameWnd::PreCreateWindow(cs);
  71. }
  72. /////////////////////////////////////////////////////////////////////////////
  73. // CMainFrame diagnostics
  74. #ifdef _DEBUG
  75. void CMainFrame::AssertValid() const
  76. {
  77. CFrameWnd::AssertValid();
  78. }
  79. void CMainFrame::Dump(CDumpContext& dc) const
  80. {
  81. CFrameWnd::Dump(dc);
  82. }
  83. #endif //_DEBUG
  84. /////////////////////////////////////////////////////////////////////////////
  85. // CMainFrame message handlers
  86. void CMainFrame::OnUpdateUpTime(CCmdUI* pCmdUI)
  87. {
  88. pCmdUI->Enable();
  89. }
  90. void CMainFrame::OnDestroy()
  91. {
  92. CFrameWnd::OnDestroy();
  93. if ( m_uTimer )
  94. KillTimer( m_uTimer );
  95. }
  96. void CMainFrame::OnTimer(UINT nIDEvent)
  97. {
  98. CalcUpTime();
  99. CFrameWnd::OnTimer(nIDEvent);
  100. }
  101. void CMainFrame::CalcUpTime()
  102. {
  103. CString strUpTime;
  104. CHttpSvrDoc* pDoc = (CHttpSvrDoc*)GetActiveDocument();
  105. // only canculate if we have a doc and it's listening....
  106. if ( pDoc && pDoc->m_pListen )
  107. {
  108. CTime timeNow = CTime::GetCurrentTime();
  109. // calculate uptime and set the status bar....
  110. CTimeSpan upTime = timeNow - pDoc->m_timeStarted;
  111. UINT uFmt = upTime.GetDays() > 0 ? IDS_UPTIME_DAYS : IDS_UPTIME_DAY;
  112. strUpTime = upTime.Format( uFmt );
  113. }
  114. else
  115. strUpTime.Format( IDS_UPTIME_START );
  116. m_wndStatusBar.SetPaneText( 1, strUpTime, TRUE );
  117. }
  118. #ifdef IMPL_CGI
  119. LRESULT CMainFrame::OnCGIDone( WPARAM, LPARAM lParam )
  120. {
  121. CRequestSocket* pReqSock = (CRequestSocket*)lParam;
  122. pReqSock->CGIDone();
  123. return 0;
  124. }
  125. #endif // IMPL_CGI