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

📄 setproxy.cpp

📁 1.MyIE开源工程协议 MyIE开源工程遵循GNU通用公共许可证GPL(GNU General Public License)开发,任何人都可以永久免费安装使用,在你下载和使用MyIE源代码前,请
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		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 + -