MFC ListCtrl控件

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);*/
 
 


你可能感兴趣的:(mfc,ListCtrl)