📄 setproxy.cpp
字号:
proxyinfo.m_Proxy = m_ProxyList.GetItemText(nItem, 1);
proxyinfo.m_Speed = m_tmpProxyCategory->m_ProxyCategory.ElementAt(m_nList)->m_Proxies.ElementAt(nItem)->m_nProxySpeed;
if(proxyinfo.DoModal() == IDOK)
{
proxyinfo.m_Proxy.TrimLeft();
proxyinfo.m_Proxy.TrimRight();
if(proxyinfo.m_ProxyName.IsEmpty())
proxyinfo.m_ProxyName = proxyinfo.m_Proxy;
m_ProxyList.SetItemText(nItem, 0, proxyinfo.m_ProxyName);
m_ProxyList.SetItemText(nItem, 1, proxyinfo.m_Proxy);
CString str;
LOADSTR(str ,IDS_SP_INVALID + proxyinfo.m_Speed);
m_ProxyList.SetItemText(nItem, 2, str);
m_tmpProxyCategory->m_ProxyCategory.ElementAt(m_nList)->m_Proxies.ElementAt(nItem)->m_strProxyName = proxyinfo.m_ProxyName;
m_tmpProxyCategory->m_ProxyCategory.ElementAt(m_nList)->m_Proxies.ElementAt(nItem)->m_strProxy = proxyinfo.m_Proxy;
m_tmpProxyCategory->m_ProxyCategory.ElementAt(m_nList)->m_Proxies.ElementAt(nItem)->m_nProxySpeed = proxyinfo.m_Speed;
}
}
}
void CSetProxy::OnItemchangedCates(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
POSITION pos = m_CateList.GetFirstSelectedItemPosition();
if(pos!=NULL && !m_bUnUpdateProxy)
{
int nItem = m_CateList.GetNextSelectedItem(pos);
if(nItem!=m_nList)
FillProxyList(nItem);
}
m_bUnUpdateProxy = FALSE;
*pResult = 0;
}
void CSetProxy::FillProxyList(int index)
{
m_nList = index;
//remove all first
m_ProxyList.DeleteAllItems();
m_ProxyList.SetItemCount(0);
CProxyList* pl;
CString str;
pl=m_tmpProxyCategory->m_ProxyCategory.GetAt(index);
for(int 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_SelWebProxy == pl->m_Proxies.ElementAt(i)->m_strProxy)
m_ProxyList.SetItemState(i, LVIS_SELECTED, LVIS_SELECTED);
LOADSTR(str ,IDS_SP_INVALID + pl->m_Proxies.ElementAt(i)->m_nProxySpeed);
m_ProxyList.SetItemText(i, 2, str);
}
if(!pl->m_bIsWebProxy)
{
m_ByPass.SetWindowText(pl->m_strProxyByPass);
m_ByPass.EnableWindow(TRUE);
}
else
{
m_ByPass.SetWindowText("");
m_ByPass.EnableWindow(FALSE);
}
}
void CSetProxy::OnEndlabeleditCates(NMHDR* pNMHDR, LRESULT* pResult)
{
LV_DISPINFO* pDispInfo = (LV_DISPINFO*)pNMHDR;
// TODO: Add your control notification handler code here
CString str;
m_CateList.GetEditControl()->GetWindowText(str);
str.TrimLeft();
str.TrimRight();
m_CateList.SetItemText(pDispInfo->item.iItem,0,str);
m_tmpProxyCategory->m_ProxyCategory.ElementAt(pDispInfo->item.iItem)->m_strCategoryName = str;
*pResult = 0;
}
void CSetProxy::OnNewcate()
{
// TODO: Add your control notification handler code here
CString def;
LOADSTR(def ,IDS_PROXY_SERVER);
CString str(def);
char si[5]; int i=0;
LVFINDINFO info;
info.flags = LVFI_STRING;
info.psz = str;
while (m_CateList.FindItem(&info) != -1)
{
i++;
itoa(i, si, 10);
str = def;
str += si;
info.psz = str;
}
CProxyList* pl = new CProxyList;
pl->m_bIsWebProxy = FALSE;
pl->m_strCategoryName = str;
pl->m_strProxyByPass = "<local>";
m_tmpProxyCategory->m_ProxyCategory.Add(pl);
i = m_CateList.GetItemCount();
m_CateList.InsertItem(i, str,1);
m_CateList.SetFocus();
m_CateList.SetItemState(i, LVIS_SELECTED, LVIS_SELECTED);
m_ByPass.SetWindowText(pl->m_strProxyByPass);
m_CateList.EnsureVisible(i,FALSE);
m_CateList.EditLabel(i);
}
void CSetProxy::OnChangeBypass()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CDialog::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
CString str;
m_ByPass.GetWindowText(str);
m_tmpProxyCategory->m_ProxyCategory.ElementAt(m_nList)->m_strProxyByPass = str;
}
void CSetProxy::OnDelcate()
{
// TODO: Add your control notification handler code here
POSITION pos = m_CateList.GetFirstSelectedItemPosition();
if(pos!=NULL)
{
if(MSGBOX(IDS_COMFIRM_CATE_DEL, MB_ICONQUESTION|MB_YESNO)==IDNO)
return;
int nItem = m_CateList.GetNextSelectedItem(pos);
m_CateList.DeleteItem(nItem);
CProxyList* pl=m_tmpProxyCategory->m_ProxyCategory.GetAt(nItem);
if(pl->m_bIsWebProxy)
m_SelWebProxy = "";
else if(nItem == m_nSelProxyList)
m_SelProxy="";
delete pl;
m_tmpProxyCategory->m_ProxyCategory.RemoveAt(nItem);
if(nItem<m_CateList.GetItemCount())
{
m_CateList.SetItemState(nItem, LVIS_SELECTED,LVIS_SELECTED);
m_nList = nItem;
FillProxyList(nItem);
}
else if(m_CateList.GetItemCount()>0)
{
m_CateList.SetItemState(0, LVIS_SELECTED,LVIS_SELECTED);
m_nList = 0;
}
else
{
m_nSelProxyList = m_nList = -1;
m_ProxyList.DeleteAllItems();
m_ProxyList.SetItemCount(0);
}
if(m_nList>=0)
{
pl=m_tmpProxyCategory->m_ProxyCategory.GetAt(nItem);
if(!pl->m_bIsWebProxy)
m_nSelProxyList = m_nList;
}
}
}
void CSetProxy::OnItemchangedProxyList(NMHDR* pNMHDR, LRESULT* pResult)
{
HD_NOTIFY *phdn = (HD_NOTIFY *) pNMHDR;
// TODO: Add your control notification handler code here
POSITION pos = m_ProxyList.GetFirstSelectedItemPosition();
if(pos!=NULL)
{
CProxyList* pl;
pl=m_tmpProxyCategory->m_ProxyCategory.GetAt(m_nList);
int nItem = m_ProxyList.GetNextSelectedItem(pos);
if(nItem>=0)
{
if(pl->m_bIsWebProxy)
m_SelWebProxy = pl->m_Proxies.ElementAt(nItem)->m_strProxy;
else
{
m_SelProxy = pl->m_Proxies.ElementAt(nItem)->m_strProxy;
m_nSelProxyList = m_nList;
}
}
}
*pResult = 0;
}
void CSetProxy::OnBegindragProxyList(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
// save the index of the item being dragged in m_nDragIndex
m_nDragIndex = pNMListView->iItem;
POINT pt;
pt.x = 8;
pt.y = 8;
if(m_pDragImage)
delete m_pDragImage;
m_pDragImage = m_ProxyList.CreateDragImage (m_nDragIndex, &pt);
ASSERT (m_pDragImage);
// changes the cursor to the drag image (DragMove() is still required in
// OnMouseMove())
VERIFY (m_pDragImage->BeginDrag (0, CPoint (8, 8)));
VERIFY (m_pDragImage->DragEnter (GetDesktopWindow (), pNMListView->ptAction));
// set dragging flag
m_bDragging = TRUE;
m_nDropIndex = -1;
m_pDropWnd = &m_CateList;
// capture all mouse messages
SetCapture ();
*pResult = 0;
}
void CSetProxy::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if (m_bDragging)
{
// release mouse capture
VERIFY (::ReleaseCapture ());
m_bDragging = FALSE;
// end dragging
VERIFY (m_pDragImage->DragLeave (GetDesktopWindow ()));
m_pDragImage->EndDrag ();
// turn off hilight for previous drop target
m_CateList.SetItemState (m_nDropIndex, 0, LVIS_DROPHILITED);
// redraw previous item
m_CateList.RedrawItems (m_nDropIndex, m_nDropIndex);
CPoint pt (point);
ClientToScreen (&pt);
// get the CWnd pointer of the window that is under the mouse cursor
// if window is CTreeCtrl
CWnd* pDropWnd = WindowFromPoint (pt);
if (pDropWnd == m_pDropWnd && m_nDropIndex>=0 && m_nDropIndex!=m_nList)
{
CProxyList* pl, *pl2;
pl = m_tmpProxyCategory->m_ProxyCategory.GetAt(m_nList);
pl2 = m_tmpProxyCategory->m_ProxyCategory.GetAt(m_nDropIndex);
if(pl->m_bIsWebProxy != pl2->m_bIsWebProxy)
MSGBOX(IDS_CANT_MOVE_PROXY, MB_ICONEXCLAMATION);
else
{
//add to new list
CProxyItem* pi;
pi = new CProxyItem;
pi->m_nProxySpeed = pl->m_Proxies.ElementAt(m_nDragIndex)->m_nProxySpeed;
pi->m_strProxy = pl->m_Proxies.ElementAt(m_nDragIndex)->m_strProxy;
pi->m_strProxyName = pl->m_Proxies.ElementAt(m_nDragIndex)->m_strProxyName;
pl2->m_Proxies.Add(pi);
if(!PRESS_CTRL)
OnProxyDel();
}
}
}
CDialog::OnLButtonUp(nFlags, point);
}
void CSetProxy::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if (m_bDragging)
{
CPoint pt (point);
ClientToScreen (&pt);
// move the drag image
VERIFY (m_pDragImage->DragMove (pt));
// unlock window updates
VERIFY (m_pDragImage->DragShowNolock (FALSE));
// get the CWnd pointer of the window that is under the mouse cursor
CWnd* pDropWnd = WindowFromPoint (pt);
ASSERT (pDropWnd);
// convert from screen coordinates to drop target client coordinates
pDropWnd->ScreenToClient (&pt);
// if window is CTreeCtrl
if (pDropWnd == m_pDropWnd)
{
UINT uFlags;
CListCtrl* pList = (CListCtrl*)pDropWnd;
// turn off hilight for previous drop target
pList->SetItemState (m_nDropIndex, 0, LVIS_DROPHILITED);
// redraw previous item
pList->RedrawItems (m_nDropIndex, m_nDropIndex);
// get the item that is below cursor
m_nDropIndex = ((CListCtrl*)pDropWnd)->HitTest (pt, &uFlags);
// highlight it
if(m_nDropIndex>=0)
{
pList->SetItemState (m_nDropIndex, LVIS_DROPHILITED, LVIS_DROPHILITED);
// redraw item
pList->RedrawItems (m_nDropIndex, m_nDropIndex);
pList->UpdateWindow ();
}
}
// lock window updates
VERIFY (m_pDragImage->DragShowNolock (TRUE));
}
CDialog::OnMouseMove(nFlags, point);
}
//#pragma optimize( "s", off )
void CSetProxy::OnDblclkProxyList(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
OnModifyproxy();
*pResult = 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -