⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 setproxy.cpp

📁 myie2.4版本的源代码
💻 CPP
📖 第 1 页 / 共 3 页
字号:
// SetProxy.cpp : implementation file
//

#include "stdafx.h"
#include "MyIE.h"
#include "SetProxy.h"
#include "MainFrm.h"
#include "ProxyInfo.h"

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

/////////////////////////////////////////////////////////////////////////////
// CSetProxy dialog

//0. invalid, 1. slower, 2. slow, 3. normal, 4. fast, 5. faster


CSetProxy::CSetProxy(CWnd* pParent /*=NULL*/)
	: CDialog(CSetProxy::IDD, pParent)
{
	//{{AFX_DATA_INIT(CSetProxy)
	m_bUseWebProxy = FALSE;
	m_bUseProxy = FALSE;
//	m_strByPass = _T("");
	//}}AFX_DATA_INIT

	m_pDragImage = NULL;
}


void CSetProxy::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CSetProxy)
	DDX_Control(pDX, IDC_BYPASS, m_ByPass);
	DDX_Control(pDX, IDC_CATES, m_CateList);
	DDX_Control(pDX, IDC_PROXY_LIST, m_ProxyList);
	DDX_Check(pDX, IDC_USE_WEB_PROXY, m_bUseWebProxy);
	DDX_Check(pDX, IDC_USER_PROXY, m_bUseProxy);
//	DDX_Text(pDX, IDC_BYPASS, m_strByPass);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CSetProxy, CDialog)
	//{{AFX_MSG_MAP(CSetProxy)
	ON_BN_CLICKED(IDC_PROXY_NEW, OnProxyNew)
	ON_BN_CLICKED(IDC_PROXY_DEL, OnProxyDel)
	ON_NOTIFY(LVN_ENDLABELEDIT, IDC_PROXY_LIST, OnEndlabeleditProxyList)
	ON_NOTIFY(NM_RCLICK, IDC_PROXY_LIST, OnRclickProxyList)
	ON_NOTIFY(UDN_DELTAPOS, IDC_SPIN1, OnDeltaposSpin1)
	ON_NOTIFY(UDN_DELTAPOS, IDC_SPIN2, OnDeltaposSpin2)
	ON_BN_CLICKED(IDC_MODIFYPROXY, OnModifyproxy)
	ON_NOTIFY(LVN_ITEMCHANGED, IDC_CATES, OnItemchangedCates)
	ON_NOTIFY(LVN_ENDLABELEDIT, IDC_CATES, OnEndlabeleditCates)
	ON_BN_CLICKED(IDC_NEWCATE, OnNewcate)
	ON_EN_CHANGE(IDC_BYPASS, OnChangeBypass)
	ON_BN_CLICKED(IDC_DELCATE, OnDelcate)
	ON_NOTIFY(LVN_ITEMCHANGED, IDC_PROXY_LIST, OnItemchangedProxyList)
	ON_NOTIFY(LVN_BEGINDRAG, IDC_PROXY_LIST, OnBegindragProxyList)
	ON_WM_LBUTTONUP()
	ON_WM_MOUSEMOVE()
	//}}AFX_MSG_MAP
	ON_COMMAND_RANGE(ID_SP_INVALID, ID_SP_FASTER, OnSetSpeed)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSetProxy message handlers

BOOL CSetProxy::OnInitDialog() 
{
	CDialog::OnInitDialog();

	CString str;
	
	m_tmpProxyCategory = new CProxyCategory(((CMainFrame*)pMainFrame)->m_aProxyCategories);

	// TODO: Add extra initialization here
	//load proxy list
/*	POSITION pos = ((CMainFrame*)pMainFrame)->m_astrProxy.GetHeadPosition();
	POSITION pos1 = ((CMainFrame*)pMainFrame)->m_aProxySpeed.GetHeadPosition();
	POSITION pos2 = ((CMainFrame*)pMainFrame)->m_astrProxyName.GetHeadPosition();
*/	CRect rect;
	int i=0;
	m_ProxyList.GetWindowRect(rect);
	m_ProxyList.InsertColumn(0,"Name");
	m_ProxyList.SetColumnWidth(0, 110);
	m_ProxyList.InsertColumn(1,"Proxy");
	m_ProxyList.SetColumnWidth(1, rect.Width()-175);
	m_ProxyList.InsertColumn(2,"Speed");
	m_ProxyList.SetColumnWidth(2, 45);

	//image
	CImageList img;
	img.Create(IDB_BITMAP10, 9, 0, RGB(255, 0, 255));
	m_CateList.SetImageList(&img, LVSIL_SMALL);
	img.Detach();

	//m_ProxyList.SetExtendedStyle(m_ProxyList.GetExtendedStyle() | LVS_EX_FULLROWSELECT);

	//fill with the default proxy list
	//category list
	m_nList = m_nSelProxyList;
	int icon;
    for(i=0; i<=m_tmpProxyCategory->m_ProxyCategory.GetUpperBound(); i++)
	{	
		if(m_tmpProxyCategory->m_ProxyCategory.ElementAt(i)->m_bIsWebProxy)
			icon=0;
		else
			icon=1;
		m_CateList.InsertItem(i, m_tmpProxyCategory->m_ProxyCategory.ElementAt(i)->m_strCategoryName, icon);
	}
	CProxyList* pl=NULL;
	if(m_nList>=0 && m_nList<i)
		pl=m_tmpProxyCategory->m_ProxyCategory.GetAt(m_nList);
	if(pl!=NULL)
	{
		for(i=0; i<=pl->m_Proxies.GetUpperBound(); i++)
		{
			m_ProxyList.InsertItem(i, pl->m_Proxies.ElementAt(i).m_strProxyName);

			m_ProxyList.SetItemText(i, 1, pl->m_Proxies.ElementAt(i).m_strProxy);
			if(m_SelProxy == pl->m_Proxies.ElementAt(i).m_strProxy)
				m_ProxyList.SetItemState(i, LVIS_SELECTED, LVIS_SELECTED);

			str.LoadString(IDS_SP_INVALID + pl->m_Proxies.ElementAt(i).m_nProxySpeed);
			m_ProxyList.SetItemText(i, 2, str);

		}
		m_ByPass.SetWindowText(pl->m_strProxyByPass);
	}

	m_CateList.SetItemState(m_nList, LVIS_SELECTED, LVIS_SELECTED);

	m_bUnUpdateProxy = TRUE;

	//load web proxy
/*	pos = ((CMainFrame*)pMainFrame)->m_astrWebProxy.GetHeadPosition();
	pos1 = ((CMainFrame*)pMainFrame)->m_aWebProxySpeed.GetHeadPosition();
	pos2 = ((CMainFrame*)pMainFrame)->m_astrWebProxyName.GetHeadPosition();
	i=0;
	m_WebProxyList.GetWindowRect(rect);
	m_WebProxyList.InsertColumn(0,"Name");
	m_WebProxyList.SetColumnWidth(0, 75);
	m_WebProxyList.InsertColumn(1,"Web Proxy");
	m_WebProxyList.SetColumnWidth(1, rect.Width()-130);
	m_WebProxyList.InsertColumn(2,"Speed");
	m_WebProxyList.SetColumnWidth(2, 45);

	m_WebProxyList.SetExtendedStyle(m_WebProxyList.GetExtendedStyle() | LVS_EX_FULLROWSELECT);

	//select web proxy
	m_SelWebProxy.MakeLower();
	m_SelWebProxy.TrimLeft();
	m_SelWebProxy.TrimRight();
	while(pos!=NULL && pos1!=NULL && pos2 != NULL)
	{
		m_WebProxyList.InsertItem(i, ((CMainFrame*)pMainFrame)->m_astrWebProxyName.GetAt(pos2));
		((CMainFrame*)pMainFrame)->m_astrWebProxyName.GetNext(pos2);

		str = ((CMainFrame*)pMainFrame)->m_astrWebProxy.GetAt(pos);
		str.MakeLower();
		str.TrimLeft();
		str.TrimRight();

		m_WebProxyList.SetItemText(i, 1, str);
		((CMainFrame*)pMainFrame)->m_astrWebProxy.GetNext(pos);
		if(m_SelWebProxy == str)
			m_WebProxyList.SetItemState(i, LVIS_SELECTED, LVIS_SELECTED);

		str.LoadString(IDS_SP_INVALID + ((CMainFrame*)pMainFrame)->m_aWebProxySpeed.GetAt(pos1));
		m_WebProxyList.SetItemText(i, 2, str);
		((CMainFrame*)pMainFrame)->m_aWebProxySpeed.GetNext(pos1);
		i++;
	}
*/
	//proxy user, password, speed
/*	pos = ((CMainFrame*)pMainFrame)->m_astrProxyUser.GetHeadPosition();
	while(pos!=NULL)
	{
		m_astrTempProxyUser.AddTail(((CMainFrame*)pMainFrame)->m_astrProxyUser.GetAt(pos));
		((CMainFrame*)pMainFrame)->m_astrProxyUser.GetNext(pos);
	}
	pos = ((CMainFrame*)pMainFrame)->m_astrProxyPwd.GetHeadPosition();
	while(pos!=NULL)
	{
		m_astrTempProxyPwd.AddTail(((CMainFrame*)pMainFrame)->m_astrProxyPwd.GetAt(pos));
		((CMainFrame*)pMainFrame)->m_astrProxyPwd.GetNext(pos);
	}*/

/*	pos = ((CMainFrame*)pMainFrame)->m_aProxySpeed.GetHeadPosition();
	while(pos!=NULL)
	{
		m_aTempProxySpeed.AddTail(((CMainFrame*)pMainFrame)->m_aProxySpeed.GetAt(pos));
		((CMainFrame*)pMainFrame)->m_aProxySpeed.GetNext(pos);
	}
*/
/*	pos = ((CMainFrame*)pMainFrame)->m_aWebProxySpeed.GetHeadPosition();
	while(pos!=NULL)
	{
		m_aTempWebProxySpeed.AddTail(((CMainFrame*)pMainFrame)->m_aWebProxySpeed.GetAt(pos));
		((CMainFrame*)pMainFrame)->m_aWebProxySpeed.GetNext(pos);
	}
*/
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}


void CSetProxy::OnOK() 
{
	// TODO: Add extra validation here
	try{
	 
		((CMainFrame*)pMainFrame)->m_aProxyCategories.Copy(*m_tmpProxyCategory);


/*2.3	((CMainFrame*)pMainFrame)->m_astrProxyName.RemoveAll();
	((CMainFrame*)pMainFrame)->m_astrProxy.RemoveAll();
	int n = m_ProxyList.GetItemCount();
	for( int i=0; i<n; i++)
	{
		((CMainFrame*)pMainFrame)->m_astrProxyName.AddTail(m_ProxyList.GetItemText(i,0));
		((CMainFrame*)pMainFrame)->m_astrProxy.AddTail(m_ProxyList.GetItemText(i,1));
	}
*/
/*	((CMainFrame*)pMainFrame)->m_astrWebProxyName.RemoveAll();
	((CMainFrame*)pMainFrame)->m_astrWebProxy.RemoveAll();
	n = m_WebProxyList.GetItemCount();
	for( i=0; i<n; i++)
	{
		((CMainFrame*)pMainFrame)->m_astrWebProxyName.AddTail(m_WebProxyList.GetItemText(i,0));
		((CMainFrame*)pMainFrame)->m_astrWebProxy.AddTail(m_WebProxyList.GetItemText(i,1));
	}*/
	

	//cur sel
/*2.3	POSITION pos = m_ProxyList.GetFirstSelectedItemPosition();
	if(pos!=NULL)
	{
		int nItem = m_ProxyList.GetNextSelectedItem(pos);
		m_SelProxy = m_ProxyList.GetItemText(nItem,1);
	}
	else
		m_SelProxy = "";*/

/*	pos = m_WebProxyList.GetFirstSelectedItemPosition();
	if(pos!=NULL)
	{
		int nItem = m_WebProxyList.GetNextSelectedItem(pos);
		m_SelWebProxy = m_WebProxyList.GetItemText(nItem,1);
	}
	else
		m_SelWebProxy="";
*/
	//proxy user, password, speed
/*	((CMainFrame*)pMainFrame)->m_astrProxyUser.RemoveAll();
	pos = m_astrTempProxyUser.GetHeadPosition();
	while(pos!=NULL)
	{
		((CMainFrame*)pMainFrame)->m_astrProxyUser.AddTail(m_astrTempProxyUser.GetAt(pos));
		m_astrTempProxyUser.GetNext(pos);
	}
	((CMainFrame*)pMainFrame)->m_astrProxyPwd.RemoveAll();
	pos = m_astrTempProxyPwd.GetHeadPosition();
	while(pos!=NULL)
	{
		((CMainFrame*)pMainFrame)->m_astrProxyPwd.AddTail(m_astrTempProxyPwd.GetAt(pos));
		m_astrTempProxyPwd.GetNext(pos);
	}*/
/*2.3	((CMainFrame*)pMainFrame)->m_aProxySpeed.RemoveAll();
	pos = m_aTempProxySpeed.GetHeadPosition();
	while(pos!=NULL)
	{
		((CMainFrame*)pMainFrame)->m_aProxySpeed.AddTail(m_aTempProxySpeed.GetAt(pos));
		m_aTempProxySpeed.GetNext(pos);
	}*/

/*	((CMainFrame*)pMainFrame)->m_aWebProxySpeed.RemoveAll();
	pos = m_aTempWebProxySpeed.GetHeadPosition();
	while(pos!=NULL)
	{
		((CMainFrame*)pMainFrame)->m_aWebProxySpeed.AddTail(m_aTempWebProxySpeed.GetAt(pos));
		m_aTempWebProxySpeed.GetNext(pos);
	}*/

	delete m_tmpProxyCategory;

	}catch(...)
	{
	}

	CDialog::OnOK();
}

/*void CSetProxy::OnWebProxyNew() 
{
	// TODO: Add your control notification handler code here
	CProxyInfo proxyinfo;
	if(proxyinfo.DoModal() == IDOK)
	{
		if(proxyinfo.m_ProxyName.IsEmpty())
			proxyinfo.m_ProxyName = proxyinfo.m_Proxy;

		int i;
		POSITION pos = m_WebProxyList.GetFirstSelectedItemPosition();
		if(pos!=NULL)
		{
			i = m_WebProxyList.GetNextSelectedItem(pos);
			i++;
		}
		else
			i = m_WebProxyList.GetItemCount();

		m_WebProxyList.InsertItem(i, proxyinfo.m_ProxyName);
		m_WebProxyList.SetItemText(i, 1, proxyinfo.m_Proxy);

		CString str;
		str.LoadString(IDS_SP_INVALID + proxyinfo.m_Speed);
		m_WebProxyList.SetItemText(i, 2, str);
		m_WebProxyList.SetFocus();
		m_WebProxyList.EnsureVisible(i,FALSE);
//		m_WebProxyList.EditLabel(i);
		pos = m_aTempWebProxySpeed.FindIndex(i-1);
		if(pos!=NULL)
			m_aTempWebProxySpeed.InsertAfter(pos, proxyinfo.m_Speed);
		else
			m_aTempWebProxySpeed.AddTail(proxyinfo.m_Speed);
	}
}

void CSetProxy::OnWebProxyDel() 
{
	// TODO: Add your control notification handler code here
	POSITION pos = m_WebProxyList.GetFirstSelectedItemPosition();
	if(pos!=NULL)
	{
		int nItem = m_WebProxyList.GetNextSelectedItem(pos);
		m_WebProxyList.DeleteItem(nItem);
		if(nItem<m_WebProxyList.GetItemCount())
			m_WebProxyList.SetItemState(nItem, LVIS_SELECTED,LVIS_SELECTED);
		pos = m_aTempWebProxySpeed.FindIndex(nItem);
		if(pos!=NULL)
			m_aTempWebProxySpeed.RemoveAt(pos);
	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -