📄 setproxy.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 + -