www.gusucode.com > VC_C++源码,界面编程,网页爬虫源码程序 > VC_C++源码,界面编程,网页爬虫源码程序/code/webpageloader_SourceCode/MainProp.cpp

    // MainProp.cpp : implementation file
//

#include "stdafx.h"
#include "WebPageLoader.h"
#include "MainProp.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CHtmlProp property page

IMPLEMENT_DYNCREATE(CHtmlProp, CPropertyPage)

static CString s_sOldUrl;
static CString s_sOldUsername;
static CString s_sOldPassword;


CHtmlProp::CHtmlProp() : CPropertyPage(CHtmlProp::IDD)
{
   ASSERT(FALSE);
}

CHtmlProp::CHtmlProp(CSession *pSession) : CPropertyPage(CHtmlProp::IDD)
{
   ASSERT_VALID(pSession);
   m_pSession = pSession;

   CSingleLock lock( *m_pSession, TRUE );

   //{{AFX_DATA_INIT(CHtmlProp)
   m_sURL = m_pSession->m_sURL;
   m_sUsername = m_pSession->m_sUsername;
   m_sPassword = m_pSession->m_sPassword;
   //}}AFX_DATA_INIT
}

CHtmlProp::~CHtmlProp()
{
}

void CHtmlProp::DoDataExchange(CDataExchange* pDX)
{
   CPropertyPage::DoDataExchange(pDX);
   //{{AFX_DATA_MAP(CHtmlProp)
   DDX_Control(pDX, IDC_URL, m_ctlURL);
   DDX_Text(pDX, IDC_URL, m_sURL);
   DDV_MaxChars(pDX, m_sURL, 1024);
   DDX_Text(pDX, IDC_USERNAME, m_sUsername);
   DDX_Text(pDX, IDC_PASSWORD, m_sPassword);
   //}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CHtmlProp, CPropertyPage)
   //{{AFX_MSG_MAP(CHtmlProp)
	ON_EN_KILLFOCUS(IDC_USERNAME, OnKillfocusUsername)
	ON_EN_CHANGE(IDC_URL, OnChangeUrl)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CHtmlProp message handlers

BOOL CHtmlProp::OnInitDialog() 
{
   CPropertyPage::OnInitDialog();
   
   BOOL bAllowEdit = m_pSession->m_State == STATE_UNSCHEDULED || m_pSession->m_State == STATE_QUEUED;

   m_ctlURL.SetReadOnly( !bAllowEdit );
   
   // Use password from previous URL
   if( m_sURL.Left(15) == s_sOldUrl.Left(15) ) {
      m_sUsername = s_sOldUsername;
      m_sPassword = s_sOldPassword;      
   }
	UpdateData(FALSE);

   return TRUE;  // return TRUE unless you set the focus to a control
                 // EXCEPTION: OCX Property Pages should return FALSE
}

void CHtmlProp::OnOK() 
{
   ASSERT_VALID(m_pSession);

   // Clean up the URL string from all the crap
   // a user with 10 thumbs may have caused :-)
   m_sURL.Remove(_T('\r'));
   m_sURL.Remove(_T('\n'));
   m_sURL.Remove(_T('\t'));
   m_sURL.TrimLeft();
   m_sURL.TrimRight();

   m_sURL.Replace(_T("%20"), _T(" "));  // TODO: Use ::InternetCrackUrl
   m_sURL.Replace(_T("%7E"), _T("~"));  // TODO: Use ::InternetCrackUrl
   m_sURL.Replace(_T("%7e"), _T("~"));  // TODO: Use ::InternetCrackUrl
   m_sURL.Replace(_T("%25"), _T("%"));  // TODO: Use ::InternetCrackUrl
   m_sURL.Replace(_T("%5B"), _T("["));  // TODO: Use ::InternetCrackUrl
   m_sURL.Replace(_T("%5D"), _T("]"));  // TODO: Use ::InternetCrackUrl

   if( !m_sUsername.IsEmpty() ) {
      s_sOldUrl = m_sURL;
      s_sOldUsername = m_sUsername;
      s_sOldPassword = m_sPassword;
   }

   CSingleLock lock( *m_pSession, TRUE );
   m_pSession->m_sURL = m_sURL;
   m_pSession->m_sUsername = m_sUsername;
   m_pSession->m_sPassword = m_sPassword;
   lock.Unlock();
   
   CPropertyPage::OnOK();
}

void CHtmlProp::OnKillfocusUsername() 
{
	UpdateData(TRUE);
   if( m_sUsername == s_sOldUsername && !m_sUsername.IsEmpty() ) m_sPassword = s_sOldPassword;
	UpdateData(FALSE);
}

BOOL CHtmlProp::OnApply() 
{
	// TODO: Add your specialized code here and/or call the base class
	
	return CPropertyPage::OnApply();
}

void CHtmlProp::OnChangeUrl() 
{
   UpdateData(TRUE);
}