ROOTPAGE.CPP
上传用户:btxinjin
上传日期:2007-01-04
资源大小:83k
文件大小:3k
- // RootPage.cpp : implementation of the CRootPage 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 "RootPage.h"
- #include "HttpDoc.h"
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
- /////////////////////////////////////////////////////////////////////////////
- // CRootPage property page
- IMPLEMENT_DYNCREATE(CRootPage, CPropertyPage)
- CRootPage::CRootPage() : CPropertyPage(CRootPage::IDD)
- {
- }
- CRootPage::CRootPage( CHttpSvrDoc* pDoc )
- : CPropertyPage(CRootPage::IDD)
- {
- //{{AFX_DATA_INIT(CRootPage)
- m_strRoot = _T("");
- //}}AFX_DATA_INIT
- m_pDoc = pDoc;
- }
- CRootPage::~CRootPage()
- {
- }
- void CRootPage::DoDataExchange(CDataExchange* pDX)
- {
- CPropertyPage::DoDataExchange(pDX);
- //{{AFX_DATA_MAP(CRootPage)
- DDX_Text(pDX, IDC_ROOTDIR, m_strRoot);
- //}}AFX_DATA_MAP
- }
- BEGIN_MESSAGE_MAP(CRootPage, CPropertyPage)
- //{{AFX_MSG_MAP(CRootPage)
- ON_BN_CLICKED(IDC_RESET, OnReset)
- ON_EN_CHANGE(IDC_ROOTDIR, OnChangeRootDir)
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
- /////////////////////////////////////////////////////////////////////////////
- // CRootPage message handlers
- void CRootPage::OnReset()
- {
- SetDlgItemText( IDC_ROOTDIR, m_pDoc->m_strRoot );
- SetModified( FALSE );
- }
- void CRootPage::OnChangeRootDir()
- {
- SetModified( TRUE );
- }
- BOOL CRootPage::OnKillActive()
- {
- BOOL bOk = CPropertyPage::OnKillActive();
- if ( bOk )
- {
- // make sure it doesn't end in a separator char....
- if ( m_strRoot[ m_strRoot.GetLength()-1 ] == SEPCHAR )
- m_strRoot = m_strRoot.Left( m_strRoot.GetLength() - 1 );
- // resolve to complete file path....
- CString strFull;
- GetFullPathName( m_strRoot, MAX_PATH, strFull.GetBuffer(MAX_PATH+1), NULL );
- strFull.ReleaseBuffer();
- // set the control to this complete, fixed path....
- SetDlgItemText( IDC_ROOTDIR, strFull );
- m_strRoot = strFull;
- // make sure the directory is valid....
- DWORD dwAttr = GetFileAttributes( strFull );
- if ( dwAttr == -1 ||
- (dwAttr & FILE_ATTRIBUTE_DIRECTORY) == 0 )
- {
- CString strText;
- strText.LoadString( IDS_BAD_ROOT );
- MessageBox( strText, NULL, MB_OK|MB_ICONSTOP );
- bOk = FALSE;
- }
- }
- return bOk;
- }
- void CRootPage::OnOK()
- {
- // make sure it doesn't end in a sepchar....
- if ( m_strRoot[ m_strRoot.GetLength()-1 ] == SEPCHAR )
- m_strRoot = m_strRoot.Left( m_strRoot.GetLength()-1 );
- // copy it over....
- if ( m_pDoc->m_strRoot.CompareNoCase( m_strRoot ) )
- {
- m_pDoc->m_strRoot = m_strRoot;
- m_pDoc->SetModifiedFlag( TRUE );
- }
- CPropertyPage::OnOK();
- }