在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; }
上面只是实现了一些基本的操作,只为交流…
ListCtrl,TreeCtrl,ListBox和Edit的综合运用
最新推荐文章于 2020-03-19 20:59:50 发布