ListCtrl控件的部分操作,有些内容是从http://www.cppblog.com/finehai/archive/2009/09/17/96574.html这位大神博客中转载的
//设置CListCtrl的属性 LONG lStyle; lStyle = GetWindowLong(m_listinfo.m_hWnd, GWL_STYLE);//获取当前窗口style lStyle &= ~LVS_TYPEMASK; //清除显示方式位 lStyle |= LVS_REPORT; //设置style SetWindowLong(m_listinfo.m_hWnd, GWL_STYLE, lStyle);//设置style DWORD dwStyle = m_listinfo.GetExtendedStyle(); dwStyle |= LVS_EX_FULLROWSELECT;//选中某行使整行高亮(只适用与report风格的listctrl) dwStyle |= LVS_EX_GRIDLINES;//网格线(只适用与report风格的listctrl) dwStyle |= LVS_EX_CHECKBOXES;//item前生成checkbox控件 m_listinfo.SetExtendedStyle(dwStyle); //设置扩展风格 //插入列 m_listinfo.InsertColumn(0,_T("姓名"),LVCFMT_CENTER,100);//0列,列标题“姓名”,格式,宽度,与列关联的子项 默认为-1,无关联 m_listinfo.InsertColumn(1,_T("科目"),LVCFMT_CENTER,100); m_listinfo.InsertColumn(2,_T("成绩"),LVCFMT_CENTER,100); //插入行 //第一行 m_listinfo.InsertItem(0,_T("张三")); m_listinfo.SetItemText(0,1,_T("语文")); m_listinfo.SetItemText(0,2,_T("98")); //第二行 m_listinfo.InsertItem(1,_T("李四")); m_listinfo.SetItemText(1,1,_T("数学")); m_listinfo.SetItemText(1,2,_T("100")); //设置某行为选中状态 //选中 int nIndex = 0; m_listinfo.SetItemState(nIndex, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED); //取消选中 // m_list.SetItemState(nIndex, 0, LVIS_SELECTED|LVIS_FOCUSED); CString str; for(int i=0; i<m_listinfo.GetItemCount(); i++) { if( m_listinfo.GetItemState(i, LVIS_SELECTED) == LVIS_SELECTED || m_listinfo.GetCheck(i)) { str.Format(_T("第%d行的checkbox为选中状态"), i); AfxMessageBox(str); } } // 得到listctrl中所有选中行的序号 // 方法一: for(int i=0; i<m_listinfo.GetItemCount(); i++) { if( m_listinfo.GetItemState(i, LVIS_SELECTED) == LVIS_SELECTED ) { str.Format(_T("选中了第%d行"), i); AfxMessageBox(str); } } // 方法二: POSITION pos = m_listinfo.GetFirstSelectedItemPosition(); if (pos == NULL) TRACE0("No items were selected!\n"); else { while (pos) { int nItem = m_listinfo.GetNextSelectedItem(pos); TRACE1("Item %d was selected!\n", nItem); // you could do your own processing on nItem here } } // // 得到item的信息 int nItemIndex=1; TCHAR szBuf[1024]; LVITEM lvi; lvi.iItem = nItemIndex; lvi.iSubItem = 0; lvi.mask = LVIF_TEXT; lvi.pszText = szBuf; lvi.cchTextMax = 1024; m_listinfo.GetItem(&lvi); //删除所有列 //方法一: //while(m_list.DeleteColumn(0)) //因为你删除了第一列后,后面的列会依次向上移动。 //方法二: //从下向上删除 /*int nColumns = 2; for (int i=nColumns-1; i>=0; i--) m_list.DeleteColumn (i);*/