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

📄 favtreectrl.cpp

📁 myie2.4版本的源代码
💻 CPP
📖 第 1 页 / 共 3 页
字号:
			url = "about:blank";
	}
	return TRUE;
}

void CFavTreeCtrl::OnRfavAddshortcut() 
{
	// TODO: Add your command handler code here
	int d = GetItemData(m_hItem);
	if(d>=0)
	{
		CString url;
		POSITION pos = m_astrFav.FindIndex(d);
		if(pos!=NULL)
			GetURL(m_astrFav.GetAt(pos), url);
		CSetSCDlg dlg;
		dlg.m_strEdit = url;
		dlg.DoModal();
	}	
}

void CFavTreeCtrl::OnRfavAlias() 
{
	// TODO: Add your command handler code here
	int d = GetItemData(m_hItem);
	if(d>=0)
	{
		CString url, alias;
		POSITION pos = m_astrFav.FindIndex(d);
		if(pos!=NULL)
			GetURL(m_astrFav.GetAt(pos), url);
		CInputAlias dlg;
		dlg.m_url = url;
		dlg.m_alias = GetItemText(m_hItem);
		if(dlg.DoModal()==IDOK)
		{
			alias = dlg.m_alias; url = dlg.m_url;
			alias.TrimLeft();
			url.TrimLeft();
			if(alias !="" && !alias.IsEmpty() && url!="" && !url.IsEmpty())
				((CMainFrame*)pMainFrame)->m_mapAlias.SetAt(alias, url);
		}
	}	
}

int CFavTreeCtrl::ExpandNode(HTREEITEM hItem)
{
	if ((hItem != NULL) && !ItemHasChildren(hItem))
	{
		int img, selimg;
		GetItemImage(hItem, img, selimg);
		if(img == 0 || img == 5)
		{
			int nEndPos = m_astrFav.GetCount();
			
			CString strName;
			strName = GetItemText(hItem);
			CString path,szPath;
			if(!((CMainFrame*)pMainFrame)->GetFavoriteFolder(szPath))
				return 0;

			GetItemPath(hItem, path);
			/*
			HTREEITEM hItemp = GetParentItem(hItem);
			HTREEITEM hParent = GetParentItem(hItemp);
			HTREEITEM hRoot = GetRootItem();
			while(hParent !=NULL)
			{
				path = GetItemText(hItemp)+"\\"+path;
				hItemp = hParent;
				hParent = GetParentItem(hParent);
			}*/
			path = "\\"+path;
			path = szPath+ path + strName;

			return ((CFavTree*)m_pFavTree)->BuildFavorites(path, nEndPos, hItem);
		}
	}
	return 0;
}

void CFavTreeCtrl::OnRfavMostFolder() 
{
	// TODO: Add your command handler code here
	CString strName;
	strName = "myiefolder.mic";
	CString path,szPath;
	if(!((CMainFrame*)pMainFrame)->GetFavoriteFolder(szPath))
		return ;

	GetItemPath(m_hItem, path);
	/*
	HTREEITEM hItem = GetParentItem(m_hItem);
	HTREEITEM hParent = GetParentItem(hItem);
	HTREEITEM hRoot = GetRootItem();
	while(hParent !=NULL)
	{
		path = GetItemText(hItem)+"\\"+path;
		hItem = hParent;
		hParent = GetParentItem(hParent);
	}*/
	if(m_hItem != GetRootItem())
	{
		path = "\\"+path;
		path = szPath+ path + GetItemText(m_hItem) + "\\";
	}
	else
		path = szPath + "\\";

//	if(CreateFile(path+strName, GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_HIDDEN, NULL)!=NULL)
	{
		int nImage, nSImage;
		GetItemImage(m_hItem, nImage, nSImage);
		if(nImage == 0)
		{
			SetItemImage(m_hItem, 5,6);
			WritePrivateProfileString("MyIE", "MostFav", "1", path+strName);
		}
		else if (nImage == 5)
		{
			SetItemImage(m_hItem, 0,2);
			WritePrivateProfileString("MyIE", "MostFav", "0", path+strName);
		}
		SetFileAttributes(path+strName, FILE_ATTRIBUTE_HIDDEN);

		//update menu
		((CMainFrame*)pMainFrame)->m_bFavDirty = TRUE;
	}
}

void CFavTreeCtrl::OnDblclk(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
/*	HTREEITEM hItem;

	CPoint pt;
	GetCursorPos(&pt);
	ScreenToClient(&pt);
	hItem = HitTest(pt);
	m_hItem = hItem;

	if (hItem != NULL )
	{
		int img, selimg;
		GetItemImage(hItem, img, selimg);
		if(img == 0 || img == 5)
		{
			if(!ItemHasChildren(hItem))
				ExpandNode(hItem);
			OnRfavOpenall();
		}

	}
*/
	*pResult = 0;
}

void CFavTreeCtrl::OnRfavfolderFind() 
{
	// TODO: Add your command handler code here
	CString path,szPath;
	if(!((CMainFrame*)pMainFrame)->GetFavoriteFolder(szPath))
		return ;

	GetItemPath(m_hItem, path);
	/*
	HTREEITEM hItem = GetParentItem(m_hItem);
	HTREEITEM hParent = GetParentItem(hItem);
	HTREEITEM hRoot = GetRootItem();
	while(hParent !=NULL)
	{
		path = GetItemText(hItem)+"\\"+path;
		hItem = hParent;
		hParent = GetParentItem(hParent);
	}*/
	if(m_hItem != GetRootItem())
	{
		path = "\\"+path;
		path = szPath+ path + GetItemText(m_hItem) + "\\";
	}
	else
		path = szPath + "\\";

	ShellExecute(NULL, "find", path, NULL, NULL, 0);

}

void CFavTreeCtrl::OnRfavProperty() 
{
	// TODO: Add your command handler code here
	CString strName;
	strName = GetItemText(m_hItem);
	CString path,szPath;
	if(!((CMainFrame*)pMainFrame)->GetFavoriteFolder(szPath))
		return ;

	GetItemPath(m_hItem, path);
	/*
	HTREEITEM hItem = GetParentItem(m_hItem);
	HTREEITEM hParent = GetParentItem(hItem);
	HTREEITEM hRoot = GetRootItem();
	while(hParent !=NULL)
	{
		path = GetItemText(hItem)+"\\"+path;
		hItem = hParent;
		hParent = GetParentItem(hParent);
	}*/
	path = "\\"+path;
	path = szPath+ path;

	try{

	SHELLEXECUTEINFO sei;
	sei.cbSize = sizeof(sei);
	sei.fMask = SEE_MASK_INVOKEIDLIST|SEE_MASK_FLAG_NO_UI ;
	sei.lpIDList = NULL;
	sei.hwnd = NULL;
	sei.lpFile = path+strName+".url";
	sei.lpVerb = "properties";
	sei.nShow = SW_SHOWDEFAULT;
	sei.lpDirectory = path;
	if(!ShellExecuteEx(&sei))
		ShellExecute(NULL, "properties", path+strName+".lnk", NULL, NULL, SW_SHOWDEFAULT );
	else
	{
		int d = GetItemData(m_hItem);
		if(d>=0)
		{
			char buf[2048];
			::GetPrivateProfileString(_T("InternetShortcut"), _T("URL"),
								  _T(""), buf, 2048,
								  path+strName+".url");
			CString url;
			POSITION pos = m_astrFav.FindIndex(d);
			if(pos!=NULL)
				url = m_astrFav.GetAt(pos);

			if(url==buf)
				return;
			else
			{
				if(pos!=NULL)
					m_astrFav.SetAt(pos, buf);
				//update menu
				((CMainFrame*)pMainFrame)->m_bFavDirty = TRUE;

			}
		}
	}

	}catch(...)
	{
	}
}

void CFavTreeCtrl::OnBegindrag(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
	// TODO: Add your control notification handler code here
	if(pImageList)
	{
		delete pImageList;
		pImageList = NULL;
	}
	m_hDragItem = pNMTreeView->itemNew.hItem;
	if(m_hDragItem == NULL)
		return;

/* 	int img, selimg;
	GetItemImage(m_hDragItem, img, selimg);
	if(img == 0 || img == 5)
	{
		//not drag folders
		*pResult = 0;
		return;
	}
*/
	pImageList = CreateDragImage(m_hDragItem);

	if(pImageList!=NULL)
	{
		VERIFY (pImageList->BeginDrag (0, CPoint (8, 8)));
		VERIFY (pImageList->DragEnter (GetDesktopWindow (), pNMTreeView->ptDrag));
		m_bDragging = TRUE;
		m_hDropItem = NULL;
		m_hOldDropItem = NULL;
		m_bMoveIntoFolder = FALSE;
		m_HalfItemHeight = GetItemHeight()/2;
		SetCapture(); 
	//	SetCursor(LoadCursor(NULL, IDC_ARROW));

		m_nTimerID = SetTimer(1, 75, NULL); //auto scroll time
    }

	*pResult = 0;
}

void CFavTreeCtrl::OnMouseMove(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	try{

	if(m_bDragging)
	{
		if(pImageList==NULL)
		{
			m_bDragging = FALSE;
			return;
		}

		CPoint pt (point);
		ClientToScreen (&pt);

		// move the drag image
		VERIFY (pImageList->DragMove (pt));

		// unlock window updates
		VERIFY (pImageList->DragShowNolock (FALSE));

		ScreenToClient (&pt);
		UINT uFlags;
		// get the item that is below cursor
		m_hDropItem = HitTest (pt, &uFlags);

		if( m_hOldDropItem == NULL )
				m_hOldDropItem = GetDropHilightItem();

		// highlight it
		if(m_hDropItem != GetRootItem())
			pt.y-=m_HalfItemHeight;
		if(HitTest(pt, &uFlags) == m_hDropItem)
		{
			SelectDropTarget (m_hDropItem);
			m_bMoveIntoFolder = TRUE;
		}
		else
		{ 
			m_bMoveIntoFolder = FALSE;
			HTREEITEM hdi = m_hDropItem;
			m_hDropItem = GetPrevSiblingItem(m_hDropItem);
			if(m_hDropItem == NULL)
			{
				m_hDropItem = GetParentItem(hdi);
				m_bMoveIntoFolder = TRUE;
			}
			SelectDropTarget(NULL);
		}

		if( m_idTimer && m_hDropItem == m_hOldDropItem )
			{
				KillTimer( m_idTimer );
				m_idTimer = 0;
			}
			
		if( !m_idTimer )
			m_idTimer = SetTimer( 1000, 2000, NULL );


		VERIFY (pImageList->DragShowNolock (TRUE));

	}
	else
	{
		//display url in status bar
		UINT uFlags;
		// get the item that is below cursor
		HTREEITEM hItem = HitTest (point, &uFlags);

		if(hItem != m_hOldDropItem)
		{
			CString url; 
			int img=-1, selimg=-1;
			GetItemImage(hItem, img, selimg);
			if(img != 0 && img != 5)
			{
				int d = GetItemData(hItem);
				if(d>=0)
				{
					POSITION pos = m_astrFav.FindIndex(d);
					if(pos!=NULL)
						url = m_astrFav.GetAt(pos);
				}
				else
					url = "";
			}
			pMainFrame->SetMessageText(url);
			m_hOldDropItem = hItem;
		}


	}

	}catch(...)
	{
	}

	CTreeCtrl::OnMouseMove(nFlags, point);
}

void CFavTreeCtrl::OnLButtonUp(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	if(m_bDragging)
	{
		KillTimer( m_nTimerID );//auto scroll
		KillTimer( m_idTimer); //auto expand
		m_nTimerID =0;
		m_idTimer = 0;

		VERIFY (pImageList->DragLeave (GetDesktopWindow ()));	
		pImageList->EndDrag ();
		// stop intercepting all mouse messages
		VERIFY (ReleaseCapture ());
 
		delete pImageList;
		pImageList = NULL;
		m_bDragging = FALSE;

		if(m_hDropItem==NULL)
			return;

		int img, selimg;
		GetItemImage(m_hDragItem, img, selimg);
		BOOL bMoveFolder=FALSE;
		if(img==0|| img == 5)
			bMoveFolder=TRUE;

		GetItemImage(m_hDropItem, img, selimg);
		BOOL bTargetFolder=FALSE;
		if((img==0|| img == 5) && m_bMoveIntoFolder)
			bTargetFolder=TRUE;


		//get source and taarget
		CString strName;
		strName = GetItemText(m_hDragItem);
		CString path,szPath;
		if(!((CMainFrame*)pMainFrame)->GetFavoriteFolder(szPath))
			return ;

		//update menu
		((CMainFrame*)pMainFrame)->m_bFavDirty = TRUE;

		GetItemPath(m_hDragItem, path);
		path = "\\"+path;
		path = szPath+ path;
		CString source;
		if(!bMoveFolder)
		{
			source = path+strName+".url";
			OFSTRUCT ofs;
			if(OpenFile(source, &ofs, OF_EXIST)==HFILE_ERROR)
			{
				source = path+strName+".lnk";
				strName += ".lnk";
			}
			else
				strName += ".url";
		}
		else
			source = path + strName;

		//get target
		CString strDir = GetItemText(m_hDropItem);

		path ="";
		GetItemPath(m_hDropItem, path);
		HTREEITEM hRoot = GetRootItem();

		path = "\\"+path;
		path = szPath+ path;
		CString target;
		if(m_hDropItem == hRoot)
			target = szPath+"\\"+strName;
		else if(!bTargetFolder)
			target = path+strName;
		else if(!m_bMoveIntoFolder)
			target = path + strName;
		else
			target = path+strDir+"\\"+strName;

		HTREEITEM hnode, hParent;
		if(!bMoveFolder)
		{
			hParent = GetParentItem(m_hDropItem);
			if(source!=target)
			{
				//copy or move here
				//get source path
				if(CopyFile(source, target, TRUE))
				{
					if(ItemHasChildren(m_hDropItem) && m_bMoveIntoFolder)//is folder
					{
						GetItemImage(m_hDragItem, img, selimg);
						hnode = InsertItem(strName.Left(strName.GetLength()-4), img, selimg, m_hDropItem, TVI_LAST);
						SetItemData(hnode, GetItemData(m_hDragItem));
					}
					else if(!bTargetFolder || !m_bMoveIntoFolder)
					{
						GetItemImage(m_hDragItem, img, selimg);
						hnode = InsertItem(strName.Left(strName.GetLength()-4), img, selimg, hParent, m_hDropItem);
						SetItemData(hnode, GetItemData(m_hDragItem));
					}


					short ks=GetKeyState(VK_CONTROL);
					if(ks>=0)
					{
						//delete original
						if(DeleteFile(source))
							DeleteItem(m_hDragItem);
					}
					//update menu order
					source = source.Left(source.GetLength()-strName.GetLength());
					hParent = GetParentItem(m_hDragItem);
					BuildMenuOrder(source, hParent);
					target = target.Left(target.GetLength()-strName.GetLength());
					if(bTargetFolder)
						hParent = m_hDropItem;
					else
						hParent = GetParentItem(m_hDropItem);
					BuildMenuOrder(target, hParent);
				
				}
				else
					//not update menu
					((CMainFrame*)pMainFrame)->m_bFavDirty = FALSE;


			}
			else
			{
				//only sort the order
				GetItemImage(m_hDragItem, img, selimg);
				if(!bTargetFolder)
				{
					hnode = InsertItem(strName.Left(strName.GetLength()-4), img, selimg, hParent, m_hDropItem);
				}
				else
					hnode = InsertItem(strName.Left(strName.GetLength()-4), img, selimg, m_hDropItem, TVI_FIRST);
				SetItemData(hnode, GetItemData(m_hDragItem));
				DeleteItem(m_hDragItem);

				//update menu order
				source = source.Left(source.GetLength()-strName.GetLength());
				if(bTargetFolder)
					hParent = m_hDropItem;
				else
					hParent = GetParentItem(m_hDropItem);
				BuildMenuOrder(source, hParent);

			}
		}
		else
		{
			hParent = GetParentItem(m_hDropItem);
			if(source!=target)
			{
				//copy or move here
				//get source path
				if(MoveFile(source, target))
				{
					if(ItemHasChildren(m_hDropItem))//is folder
					{
						GetItemImage(m_hDragItem, img, selimg);
						hnode = InsertItem(strName, img, selimg, m_hDropItem, TVI_LAST);
						SetItemData(hnode, GetItemData(m_hDragItem));
					}
					else if(!bTargetFolder)

⌨️ 快捷键说明

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