ROOTPAGE.CPP
上传用户:btxinjin
上传日期:2007-01-04
资源大小:83k
文件大小:3k
源码类别:

Web服务器

开发平台:

Visual C++

  1. // RootPage.cpp : implementation of the CRootPage 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 "RootPage.h"
  15. #include "HttpDoc.h"
  16. #ifdef _DEBUG
  17. #define new DEBUG_NEW
  18. #undef THIS_FILE
  19. static char THIS_FILE[] = __FILE__;
  20. #endif
  21. /////////////////////////////////////////////////////////////////////////////
  22. // CRootPage property page
  23. IMPLEMENT_DYNCREATE(CRootPage, CPropertyPage)
  24. CRootPage::CRootPage() : CPropertyPage(CRootPage::IDD)
  25. {
  26. }
  27. CRootPage::CRootPage( CHttpSvrDoc* pDoc )
  28. : CPropertyPage(CRootPage::IDD)
  29. {
  30. //{{AFX_DATA_INIT(CRootPage)
  31. m_strRoot = _T("");
  32. //}}AFX_DATA_INIT
  33. m_pDoc = pDoc;
  34. }
  35. CRootPage::~CRootPage()
  36. {
  37. }
  38. void CRootPage::DoDataExchange(CDataExchange* pDX)
  39. {
  40. CPropertyPage::DoDataExchange(pDX);
  41. //{{AFX_DATA_MAP(CRootPage)
  42. DDX_Text(pDX, IDC_ROOTDIR, m_strRoot);
  43. //}}AFX_DATA_MAP
  44. }
  45. BEGIN_MESSAGE_MAP(CRootPage, CPropertyPage)
  46. //{{AFX_MSG_MAP(CRootPage)
  47. ON_BN_CLICKED(IDC_RESET, OnReset)
  48. ON_EN_CHANGE(IDC_ROOTDIR, OnChangeRootDir)
  49. //}}AFX_MSG_MAP
  50. END_MESSAGE_MAP()
  51. /////////////////////////////////////////////////////////////////////////////
  52. // CRootPage message handlers
  53. void CRootPage::OnReset()
  54. {
  55. SetDlgItemText( IDC_ROOTDIR, m_pDoc->m_strRoot );
  56. SetModified( FALSE );
  57. }
  58. void CRootPage::OnChangeRootDir()
  59. {
  60. SetModified( TRUE );
  61. }
  62. BOOL CRootPage::OnKillActive()
  63. {
  64. BOOL bOk = CPropertyPage::OnKillActive();
  65. if ( bOk )
  66. {
  67. // make sure it doesn't end in a separator char....
  68. if ( m_strRoot[ m_strRoot.GetLength()-1 ] == SEPCHAR )
  69. m_strRoot = m_strRoot.Left( m_strRoot.GetLength() - 1 );
  70. // resolve to complete file path....
  71. CString strFull;
  72. GetFullPathName( m_strRoot, MAX_PATH, strFull.GetBuffer(MAX_PATH+1), NULL );
  73. strFull.ReleaseBuffer();
  74. // set the control to this complete, fixed path....
  75. SetDlgItemText( IDC_ROOTDIR, strFull );
  76. m_strRoot = strFull;
  77. // make sure the directory is valid....
  78. DWORD dwAttr = GetFileAttributes( strFull );
  79. if ( dwAttr == -1 ||
  80. (dwAttr & FILE_ATTRIBUTE_DIRECTORY) == 0 )
  81. {
  82. CString strText;
  83. strText.LoadString( IDS_BAD_ROOT );
  84. MessageBox( strText, NULL, MB_OK|MB_ICONSTOP );
  85. bOk = FALSE;
  86. }
  87. }
  88. return bOk;
  89. }
  90. void CRootPage::OnOK()
  91. {
  92. // make sure it doesn't end in a sepchar....
  93. if ( m_strRoot[ m_strRoot.GetLength()-1 ] == SEPCHAR )
  94. m_strRoot = m_strRoot.Left( m_strRoot.GetLength()-1 );
  95. // copy it over....
  96. if ( m_pDoc->m_strRoot.CompareNoCase( m_strRoot ) )
  97. {
  98. m_pDoc->m_strRoot = m_strRoot;
  99. m_pDoc->SetModifiedFlag( TRUE );
  100. }
  101. CPropertyPage::OnOK();
  102. }