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

📄 mytreectrl.cpp

📁 该源代码实现了局域网内的信息传递、文件传输
💻 CPP
字号:
// MyTreeCtrl.cpp : implementation file
//

#include "stdafx.h"
#include "BQQ.h"
#include "MyTreeCtrl.h"
#include "rename.h"
#include "myaddrdlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CMyTreeCtrl

CMyTreeCtrl::CMyTreeCtrl()
{
}

CMyTreeCtrl::~CMyTreeCtrl()
{
}


BEGIN_MESSAGE_MAP(CMyTreeCtrl, CTreeCtrl)
	//{{AFX_MSG_MAP(CMyTreeCtrl)
	ON_WM_RBUTTONDOWN()
	ON_COMMAND(ID_GROUPADD, OnGroupadd)
	ON_COMMAND(ID_GROUPDEL, OnGroupdel)
	ON_NOTIFY_REFLECT(TVN_SELCHANGING, OnSelchanging)
	ON_NOTIFY_REFLECT(TVN_SELCHANGED, OnSelchanged)
	ON_WM_LBUTTONDBLCLK()
	ON_COMMAND(ID_GROUPRN, OnGrouprn)
	ON_WM_LBUTTONDOWN()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMyTreeCtrl message handlers

BOOL CMyTreeCtrl::InitTree()
{
	try
	{
		
		TVINSERTSTRUCT tvInsert;
		tvInsert.hParent = NULL;
		tvInsert.hInsertAfter = NULL;
		tvInsert.item.mask = TVIF_TEXT;
		tvInsert.item.pszText = _T("地址分组");
		this->DeleteAllItems();
		hCountry = this->InsertItem(&tvInsert);
		LoadGroup();
		if(this->GetCount()==1)
			InsertItem(TVIF_TEXT,_T("个人组"),0, 0,0,0,0, hCountry, NULL);
		this->Expand(hCountry,TVE_EXPAND);
		this->SelectItem(this->GetChildItem(this->GetRootItem()));
	}
	catch(...)
	{
		MessageBox("初始化有错误发生!","提示",MB_ICONERROR|MB_OK);
	}
	return TRUE;
}

BOOL CMyTreeCtrl::AddAItem(CString nodeName)
{
	if(hCountry ==NULL)
		hCountry = this->GetRootItem();
	InsertItem(TVIF_TEXT,_T(nodeName),0, 0,0,0,0, hCountry, NULL);
 return TRUE;
}

void CMyTreeCtrl::OnRButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	CTreeCtrl::OnRButtonDown(nFlags, point);

	CMenu* popMenu = new CMenu();
 	popMenu->LoadMenu(IDR_TREEPOP);
 	CMenu* file_menu = popMenu->GetSubMenu(0);
 	ClientToScreen(&point);
 	file_menu->TrackPopupMenu(TPM_RIGHTBUTTON|TPM_LEFTALIGN,point.x,point.y,this);
	if(popMenu != NULL)
		delete popMenu;
}

void CMyTreeCtrl::OnGroupadd() 
{
	// TODO: Add your command handler code here
	CString newName="";
	newName.Format("Group%d",this->GetCount());
	AddAItem(newName);
}

void CMyTreeCtrl::OnGroupdel() 
{
	// TODO: Add your command handler code here
	HTREEITEM selItem = this->GetSelectedItem();
	if ((selItem != NULL)&& this->GetItemText(selItem) !="好友分组")
	{
		if(this->ItemHasChildren(selItem) )
		{
			this->Expand(selItem, TVE_EXPAND);
 			this->EnsureVisible(selItem);
		}
		else
		{
			this->DeleteItem(selItem);
			((CMyAddrDlg*)GetParent())->m_MyListCtrl.DeleteAllItems();
			WritePrivateProfileString(((CMyAddrDlg*)GetParent())->m_MyListCtrl.m_CurrentGroup, NULL , NULL, BQQ_INI );// delete all old group	
			((CMyAddrDlg*)GetParent())->m_MyListCtrl.m_CurrentGroup = "";

		}
	}
}

void CMyTreeCtrl::OnGrouprn() 
{
	// TODO: Add your command handler code here

	CReName renameDlg(this->GetParent());
	HTREEITEM selItem = this->GetSelectedItem();
	if ((selItem != NULL)&& this->GetItemText(selItem) !="好友分组")
	{
		if(this->ItemHasChildren(selItem) )
		{
			this->Expand(selItem, TVE_EXPAND);
 			this->EnsureVisible(selItem);
		}
		else
		{
			renameDlg.m_NewName = this->GetItemText(selItem);	
			if(renameDlg.DoModal()==IDOK)
			{
				this->SetItemText(selItem,(LPCTSTR)renameDlg.m_NewName);
				((CMyAddrDlg*)GetParent())->m_MyListCtrl.m_CurrentGroup = renameDlg.m_NewName;
			}
		}
	}

}

void CMyTreeCtrl::OnSelchanging(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
	// TODO: Add your control notification handler code here
	((CMyAddrDlg*)GetParent())->m_MyListCtrl.SaveAll();
	*pResult = 0;
}

void CMyTreeCtrl::OnSelchanged(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
	// TODO: Add your control notification handler code here
	HTREEITEM selItem = this->GetSelectedItem();
	if ((selItem != NULL)&& this->GetItemText(selItem) !="好友分组")
	{
		if(this->ItemHasChildren(selItem) )
		{
			this->Expand(selItem, TVE_EXPAND);
 			this->EnsureVisible(selItem);
		}
		else
		{
			((CMyAddrDlg*)GetParent())->m_MyListCtrl.m_CurrentGroup =this->GetItemText(selItem);
			((CMyAddrDlg*)GetParent())->m_MyListCtrl.LoadLs();
		}
	}
	
	*pResult = 0;
}

BOOL CMyTreeCtrl::LoadGroup()
{
	#define MAX_TEMP_BUFFER_SIZE		2000
	TCHAR stTemp[MAX_TEMP_BUFFER_SIZE+1];
	CString groupNumber="";

	for (int i = 0; i < MAX_GROUP ; i++)
	{
		groupNumber.Format("Group%d", i+1);
		GetPrivateProfileString(_T("BQQGROUPS"), groupNumber,"", stTemp, MAX_TEMP_BUFFER_SIZE, BQQ_INI );
		if ( strcmp( stTemp , "") != 0 )
		{
			AddAItem(stTemp);
		}
		
	}

	return TRUE;
}

BOOL CMyTreeCtrl::SavGroup()
{
	WritePrivateProfileString(_T("BQQGROUPS"), NULL , NULL, BQQ_INI );// delete all old group	
	if(hCountry ==NULL)
		hCountry = this->GetFirstVisibleItem();
	HTREEITEM hCurrent = this->GetChildItem(hCountry);
	int i=1;
	while (hCurrent != NULL)
	{
		CString gpName="我的好友",groupNumber="";
		gpName = GetItemText(hCurrent);
		if ( !gpName.IsEmpty() && gpName !="好友分组")
		groupNumber.Format("Group%d", i++);
		WritePrivateProfileString(_T("BQQGROUPS"), groupNumber , gpName, BQQ_INI );
		hCurrent = GetNextItem(hCurrent, TVGN_NEXT);
	}
	return TRUE;
}

void CMyTreeCtrl::OnLButtonDblClk(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	CTreeCtrl::OnLButtonDblClk(nFlags, point);
	OnGrouprn();
}


void CMyTreeCtrl::OnLButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	CTreeCtrl::OnLButtonDown(nFlags, point);
	UINT uFlags=0;
    HTREEITEM hti = HitTest(point,&uFlags);
    if( (uFlags & TVHT_ONITEMSTATEICON) && hti == GetRootItem())
    {
		HTREEITEM hCurrent = GetChildItem(hti);
		while (hCurrent != NULL)
		{
			SetCheck(hCurrent,GetCheck(hti));
			hCurrent = GetNextItem(hCurrent, TVGN_NEXT);
		}
		
	}
	if(GetSelectedItem() == GetRootItem())
	{
		((CMyAddrDlg*)GetParent())->m_MyListCtrl.m_CurrentGroup ="";
		((CMyAddrDlg*)GetParent())->m_MyListCtrl.DeleteAllItems();
	}
}

⌨️ 快捷键说明

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