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

📄 setproxy.cpp

📁 myie的源程序是用VC++写自已可以扩搌使用
💻 CPP
字号:
// SetProxy.cpp : implementation file
//

#include "stdafx.h"
#include "MyIE.h"
#include "SetProxy.h"
#include "MainFrm.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;
	//}}AFX_DATA_INIT
}


void CSetProxy::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CSetProxy)
	DDX_Control(pDX, IDC_WEB_PRO_LIST, m_WebProxyList);
	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);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CSetProxy, CDialog)
	//{{AFX_MSG_MAP(CSetProxy)
	ON_BN_CLICKED(IDC_WEB_PROXY_NEW, OnWebProxyNew)
	ON_BN_CLICKED(IDC_WEB_PROXY_DEL, OnWebProxyDel)
	ON_BN_CLICKED(IDC_PROXY_NEW, OnProxyNew)
	ON_BN_CLICKED(IDC_PROXY_DEL, OnProxyDel)
	ON_NOTIFY(LVN_ENDLABELEDIT, IDC_WEB_PRO_LIST, OnEndlabeleditWebProList)
	ON_NOTIFY(LVN_ENDLABELEDIT, IDC_PROXY_LIST, OnEndlabeleditProxyList)
	ON_NOTIFY(NM_RCLICK, IDC_PROXY_LIST, OnRclickProxyList)
	ON_NOTIFY(NM_RCLICK, IDC_WEB_PRO_LIST, OnRclickWebProList)
	ON_NOTIFY(UDN_DELTAPOS, IDC_SPIN1, OnDeltaposSpin1)
	ON_NOTIFY(UDN_DELTAPOS, IDC_SPIN2, OnDeltaposSpin2)
	//}}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;
	
	// TODO: Add extra initialization here
	//load proxy list
	POSITION pos = ((CMainFrame*)pMainFrame)->m_astrProxy.GetHeadPosition();
	POSITION pos1 = ((CMainFrame*)pMainFrame)->m_aProxySpeed.GetHeadPosition();
	CRect rect;
	int i=0;
	m_ProxyList.InsertColumn(0,"Proxy");
	m_ProxyList.GetWindowRect(rect);
	m_ProxyList.SetColumnWidth(0, rect.Width()-63);
	m_ProxyList.InsertColumn(1,"Speed");
	m_ProxyList.SetColumnWidth(1, 45);

	while(pos!=NULL)
	{
		m_ProxyList.InsertItem(i, ((CMainFrame*)pMainFrame)->m_astrProxy.GetAt(pos));
		if(m_SelProxy == ((CMainFrame*)pMainFrame)->m_astrProxy.GetAt(pos))
			m_ProxyList.SetItemState(i, LVIS_SELECTED, LVIS_SELECTED);
		((CMainFrame*)pMainFrame)->m_astrProxy.GetNext(pos);
		str.LoadString(IDS_SP_INVALID + ((CMainFrame*)pMainFrame)->m_aProxySpeed.GetAt(pos1));
		m_ProxyList.SetItemText(i, 1, str);
		((CMainFrame*)pMainFrame)->m_aProxySpeed.GetNext(pos1);
		i++;
	}

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

	//select web proxy
	m_SelWebProxy.MakeLower();
	m_SelWebProxy.TrimLeft();
	m_SelWebProxy.TrimRight();
	while(pos!=NULL)
	{
		str = ((CMainFrame*)pMainFrame)->m_astrWebProxy.GetAt(pos);
		str.MakeLower();
		str.TrimLeft();
		str.TrimRight();

		m_WebProxyList.InsertItem(i, 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, 1, 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
	((CMainFrame*)pMainFrame)->m_astrProxy.RemoveAll();
	int n = m_ProxyList.GetItemCount();
	for( int i=0; i<n; i++)
	{
		((CMainFrame*)pMainFrame)->m_astrProxy.AddTail(m_ProxyList.GetItemText(i,0));
	}
	((CMainFrame*)pMainFrame)->m_astrWebProxy.RemoveAll();
	n = m_WebProxyList.GetItemCount();
	for( i=0; i<n; i++)
	{
		((CMainFrame*)pMainFrame)->m_astrWebProxy.AddTail(m_WebProxyList.GetItemText(i,0));
	}
	
	//cur sel
	POSITION pos = m_ProxyList.GetFirstSelectedItemPosition();
	if(pos!=NULL)
	{
		int nItem = m_ProxyList.GetNextSelectedItem(pos);
		m_SelProxy = m_ProxyList.GetItemText(nItem,0);
	}
	else
		m_SelProxy = "";

	pos = m_WebProxyList.GetFirstSelectedItemPosition();
	if(pos!=NULL)
	{
		int nItem = m_WebProxyList.GetNextSelectedItem(pos);
		m_SelWebProxy = m_WebProxyList.GetItemText(nItem,0);
	}
	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);
	}*/
	((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);
	}

	CDialog::OnOK();
}

void CSetProxy::OnWebProxyNew() 
{
	// TODO: Add your control notification handler code here
	int i = m_WebProxyList.GetItemCount();
	m_WebProxyList.InsertItem(i, "New Web Proxy");
	CString str;
	str.LoadString(IDS_SP_NOR);
	m_WebProxyList.SetItemText(i, 1, str);
	m_WebProxyList.SetFocus();
	m_WebProxyList.EnsureVisible(i,FALSE);
	m_WebProxyList.EditLabel(i);
	m_aTempWebProxySpeed.AddTail(3);
}

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);
	}

}

void CSetProxy::OnProxyNew() 
{
	// TODO: Add your control notification handler code here
	int i = m_ProxyList.GetItemCount();
	m_ProxyList.InsertItem(i, "New Proxy");
	CString str;
	str.LoadString(IDS_SP_NOR);
	m_ProxyList.SetItemText(i, 1, str);
	m_ProxyList.SetFocus();
	m_ProxyList.EnsureVisible(i,FALSE);
	m_ProxyList.EditLabel(i);
//	m_astrTempProxyUser.AddTail("");
//	m_astrTempProxyPwd.AddTail("");
	m_aTempProxySpeed.AddTail(3);
}

void CSetProxy::OnProxyDel() 
{
	// TODO: Add your control notification handler code here
	POSITION pos = m_ProxyList.GetFirstSelectedItemPosition();
	if(pos!=NULL)
	{
		int nItem = m_ProxyList.GetNextSelectedItem(pos);
		m_ProxyList.DeleteItem(nItem);
		if(nItem<m_ProxyList.GetItemCount())
			m_ProxyList.SetItemState(nItem, LVIS_SELECTED,LVIS_SELECTED);
/*		pos = m_astrTempProxyUser.FindIndex(nItem);
		if(pos!=NULL)
			m_astrTempProxyUser.RemoveAt(pos);
		pos = m_astrTempProxyPwd.FindIndex(nItem);
		if(pos!=NULL)
			m_astrTempProxyPwd.RemoveAt(pos);
*/		pos = m_aTempProxySpeed.FindIndex(nItem);
		if(pos!=NULL)
			m_aTempProxySpeed.RemoveAt(pos);

	}
	
}

void CSetProxy::OnEndlabeleditWebProList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	LV_DISPINFO* pDispInfo = (LV_DISPINFO*)pNMHDR;
	// TODO: Add your control notification handler code here
	CString str;
	m_WebProxyList.GetEditControl()->GetWindowText(str);
	str.MakeLower();
	str.TrimLeft();
	str.TrimRight();
	m_WebProxyList.SetItemText(pDispInfo->item.iItem,0,str);
	
	*pResult = 0;
}

void CSetProxy::OnEndlabeleditProxyList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	LV_DISPINFO* pDispInfo = (LV_DISPINFO*)pNMHDR;
	// TODO: Add your control notification handler code here
	CString str;
	m_ProxyList.GetEditControl()->GetWindowText(str);
	str.MakeLower();
	str.TrimLeft();
	str.TrimRight();

	m_ProxyList.SetItemText(pDispInfo->item.iItem,0,str);
	
	*pResult = 0;
}

void CSetProxy::OnRclickProxyList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	int nItem;

	CPoint pt;
	GetCursorPos(&pt);
	m_ProxyList.ScreenToClient(&pt);
	nItem = m_ProxyList.HitTest(pt);
	m_nItem = nItem;
	m_nList =0; //proxy list

	if (nItem != -1) 
	{
		CMenu menu;
		CMenu* pPopup;

		// the font popup is stored in a resource
		menu.LoadMenu(IDR_SPEED);
		pPopup = menu.GetSubMenu(0);
		m_ProxyList.ClientToScreen(&pt);
		pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_RIGHTBUTTON, pt.x, pt.y + 1, this);

	}
	
	*pResult = 0;
}

void CSetProxy::OnSetSpeed(UINT nID) 
{
	int c=nID - ID_SP_INVALID;
	POSITION pos;
	if(m_nList == 0)
		pos = m_aTempProxySpeed.FindIndex(m_nItem);
	else
		pos = m_aTempWebProxySpeed.FindIndex(m_nItem);

	if(pos!=NULL)
		if(m_nList == 0)
			m_aTempProxySpeed.SetAt(pos, c);
		else
			m_aTempWebProxySpeed.SetAt(pos, c);

	CString str;
	str.LoadString(c + IDS_SP_INVALID);
	if(m_nList == 0)
		m_ProxyList.SetItemText( m_nItem, 1, str );
	else
		m_WebProxyList.SetItemText( m_nItem, 1, str );

}

void CSetProxy::OnRclickWebProList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	int nItem;

	CPoint pt;
	GetCursorPos(&pt);
	m_WebProxyList.ScreenToClient(&pt);
	nItem = m_WebProxyList.HitTest(pt);
	m_nItem = nItem;
	m_nList = 1; //web proxy list;

	if (nItem != -1) 
	{
		CMenu menu;
		CMenu* pPopup;

		// the font popup is stored in a resource
		menu.LoadMenu(IDR_SPEED);
		pPopup = menu.GetSubMenu(0);
		m_WebProxyList.ClientToScreen(&pt);
		pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_RIGHTBUTTON, pt.x, pt.y + 1, this);

	}
	
	*pResult = 0;
}

void CSetProxy::OnDeltaposSpin1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;
	// TODO: Add your control notification handler code here
	POSITION pos = m_ProxyList.GetFirstSelectedItemPosition();
	int nItem = -1, newItem;
	if(pos!=NULL)
	{
		nItem = m_ProxyList.GetNextSelectedItem(pos);
		if(pNMUpDown->iDelta<0)
			newItem = nItem -1;
		else
			newItem = nItem + 1;
		int n = m_ProxyList.GetItemCount();
		if(newItem>=0 && newItem<n)
		{
			CString str = m_ProxyList.GetItemText(nItem,0);
			m_ProxyList.DeleteItem(nItem);

			m_ProxyList.InsertItem(newItem, str);
			pos = m_aTempProxySpeed.FindIndex(nItem);
			str.LoadString(IDS_SP_INVALID + m_aTempProxySpeed.GetAt(pos));
			m_ProxyList.SetItemText(newItem, 1, str);
			m_ProxyList.SetItemState(newItem, LVIS_SELECTED, LVIS_SELECTED);
			m_ProxyList.EnsureVisible(newItem, FALSE);

/*			pos = m_astrTempProxyUser.FindIndex(nItem);
			POSITION pos1= m_astrTempProxyUser.FindIndex(newItem);
			if(pNMUpDown->iDelta<0)
				m_astrTempProxyUser.InsertBefore(pos1, m_astrTempProxyUser.GetAt(pos));
			else
				m_astrTempProxyUser.InsertAfter(pos1, m_astrTempProxyUser.GetAt(pos));
			m_astrTempProxyUser.RemoveAt(pos);

			pos = m_astrTempProxyPwd.FindIndex(nItem);
			pos1= m_astrTempProxyPwd.FindIndex(newItem);
			if(pNMUpDown->iDelta<0)
				m_astrTempProxyPwd.InsertBefore(pos1, m_astrTempProxyPwd.GetAt(pos));
			else
				m_astrTempProxyPwd.InsertAfter(pos1, m_astrTempProxyPwd.GetAt(pos));
			m_astrTempProxyPwd.RemoveAt(pos);
*/
			pos = m_aTempProxySpeed.FindIndex(nItem);
			POSITION pos1= m_aTempProxySpeed.FindIndex(newItem);
			if(pNMUpDown->iDelta<0)
				m_aTempProxySpeed.InsertBefore(pos1, m_aTempProxySpeed.GetAt(pos));
			else
				m_aTempProxySpeed.InsertAfter(pos1, m_aTempProxySpeed.GetAt(pos));
			m_aTempProxySpeed.RemoveAt(pos);

		}
	}

	*pResult = 0;
}

void CSetProxy::OnDeltaposSpin2(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;
	// TODO: Add your control notification handler code here
	POSITION pos = m_WebProxyList.GetFirstSelectedItemPosition();
	int nItem = -1, newItem;
	if(pos!=NULL)
	{
		nItem = m_WebProxyList.GetNextSelectedItem(pos);
		if(pNMUpDown->iDelta<0)
			newItem = nItem -1;
		else
			newItem = nItem + 1;
		int n = m_WebProxyList.GetItemCount();
		if(newItem>=0 && newItem<n)
		{
			CString str = m_WebProxyList.GetItemText(nItem,0);
			m_WebProxyList.DeleteItem(nItem);

			m_WebProxyList.InsertItem(newItem, str);
			pos = m_aTempWebProxySpeed.FindIndex(nItem);
			str.LoadString(IDS_SP_INVALID + m_aTempWebProxySpeed.GetAt(pos));
			m_WebProxyList.SetItemText(newItem, 1, str);
			m_WebProxyList.SetItemState(newItem, LVIS_SELECTED, LVIS_SELECTED);
			m_WebProxyList.EnsureVisible(newItem, FALSE);

			pos = m_aTempWebProxySpeed.FindIndex(nItem);
			POSITION pos1= m_aTempWebProxySpeed.FindIndex(newItem);
			if(pNMUpDown->iDelta<0)
				m_aTempWebProxySpeed.InsertBefore(pos1, m_aTempWebProxySpeed.GetAt(pos));
			else
				m_aTempWebProxySpeed.InsertAfter(pos1, m_aTempWebProxySpeed.GetAt(pos));
			m_aTempWebProxySpeed.RemoveAt(pos);

		}
	}
	
	*pResult = 0;
}

⌨️ 快捷键说明

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