ListCtrl,TreeCtrl,ListBox和Edit的综合运用

 在MFC的编程中这些控件用得较为频繁,于是我就写了个小程序 集合了上面的这些控件的一些基本操作 希望能帮到和我一样的新手-------------

好了,话不多说,我们开始吧:

1),首先建立一个基于Dlg的MFC应用程序,我们将ListCtrl,TreeCtrl,ListBox和Edit控件拖到对话框上

2),将各控件关联各自的 control(控件)类型 变量 得到如下: CListCtrl m_ListCtrl;
                                                                                                                      CTreeCtrl m_CTreeCtrl;
                                                                                                                      CListBox m_CListBox;
                                                                                                                      CEdit m_CEdit;

3),初始化个控件 在 OnInitDialog()函数中添加以下代码:

//List Control初始化-----------插入列-------------------
	m_ListCtrl.InsertColumn(0,_T("文件名"),LVCFMT_LEFT,50);
	m_ListCtrl.InsertColumn(1,_T("大小"),LVCFMT_LEFT,40);
	m_ListCtrl.InsertColumn(2,_T("修改日期"),LVCFMT_LEFT,100);
	//m_ListCtrl.InsertColumn(3,_T("文件类型"),LVCFMT_LEFT,60);
	m_ListCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_TWOCLICKACTIVATE);
	m_ListCtrl.SetTextColor(RGB(1,222,1));
	m_ListCtrl.SetBkImage(_T("F:\\1.txt"));

	//Tab Control初始化-----------插入页-------------------
	 m_CTabCtrl.InsertItem(0,_T("叶一"));
	 m_CTabCtrl.InsertItem(1,_T("叶二"));
	 m_CTabCtrl.InsertItem(2,_T("叶三"));
	 m_CTabCtrl.SetExtendedStyle(TCS_EX_FLATSEPARATORS | TCS_EX_REGISTERDROP);


   //Tree Control初始化-----------插入根-------------------
	hCountry = m_CTreeCtrl.InsertItem(_T("目录"),NULL,NULL);
	hPA = m_CTreeCtrl.InsertItem(_T("概要"),hCountry,NULL);
	m_CTreeCtrl.InsertItem(_T("概要1"),hPA,NULL);
	//m_CTreeCtrl.Expand(hPA,TVIS_SELECTED | TVIS_EXPANDED);
	HTREEITEM  hPW = m_CTreeCtrl.InsertItem(_T("条款"),hCountry,NULL);
	m_CTreeCtrl.SetTextColor(RGB(1,222,2));
	m_CTreeCtrl.ModifyStyle(NULL,TVS_HASBUTTONS | TVS_HASLINES );
	m_CTreeCtrl.Expand(hCountry,TVIS_EXPANDED | TVIS_SELECTED);
	m_CTreeCtrl.SetInsertMarkColor(RGB(222,1,1));

	//Listbox Control初始化------添加一行------------------
	m_CListBox.AddString(_T("-Tired!"));


4)添加一个Button按钮 ,并响应一个单击事件函数 我们将在这个Button上实现向个控件加入数据,代码如下:

void CSevenDlg::OnBnClickedAdddata()
{
	CString str;

	//向Listbox中添加
	m_CEdit.GetWindowText(str);
	m_CListBox.AddString(str);
	m_CListBox.SetCurSel( 0 ) ;

	//向List列表中添加
	int nRow =m_ListCtrl.InsertItem(0,(LPCTSTR)"ID1");
	m_ListCtrl.SetItemText(nRow, 1,str);
	m_ListCtrl.SetItemText(nRow, 2,str);

	//向Tree中添加
	m_CTreeCtrl.InsertItem(str,hCountry);

}


5),既然有添加 那么久有删除,我们继续添加一个Button实现 点击某个控件后 删除选择的项,代码如下:

void CSevenDlg::OnBnClickedDelete()
{
	//删除ListBox
	m_CListBox.DeleteString(m_CListBox.GetCurSel());
	//删除TreeCtrl
	m_CTreeCtrl.DeleteItem(m_CTreeCtrl.GetSelectedItem());
	//删除ListCtrl
	POSITION p=m_ListCtrl.GetFirstSelectedItemPosition();     //删除选定列
	while(p) 
	{ 
		int      nSelected=m_ListCtrl.GetNextSelectedItem(p);  
		m_ListCtrl.DeleteItem(nSelected);  
		p=m_ListCtrl.GetFirstSelectedItemPosition();  
	} 
}

6)最后我们在对ListCtrl实现以个双击后将所选数据添加到Listbox中 和 Tree中 在此我们将 HTREEITEM  hCountry ;(根)
 HTREEITEM hPA; (一级)声明在.H文件中 在ListCtrl属性里选择NM_DBLCLK 事件并添加事件函数,代码如下:

void CSevenDlg::OnNMDblclkList1(NMHDR *pNMHDR, LRESULT *pResult)
{
	LPNMITEMACTIVATE pNMItemActivate = (LPNMITEMACTIVATE)(pNMHDR);
	// TODO: Add your control notification handler code here
	CString str,str1;
	int i;
	for(i=0; i<m_ListCtrl.GetItemCount(); i++) 
	{ 
		if( m_ListCtrl.GetItemState(i, LVIS_SELECTED) == LVIS_SELECTED ) 
		{ 
			str.Format(_T("选中了第%d行"), i); 
			AfxMessageBox(str); 
			str1 = m_ListCtrl.GetItemText(i,1);
			m_CListBox.AddString(str1);
			m_CTreeCtrl.InsertItem(str1,hPA);
		} 
	} 
	*pResult = 0;
}


上面只是实现了一些基本的操作,只为交流…

你可能感兴趣的:(编程,list,tree,null,mfc,button)