MFC中listctrl的使用

来源:互联网 发布:雨人医药软件好不好 编辑:程序博客网 时间:2024/05/17 07:31

  首先给他绑上一个CListCtrl类型的变量m_Listctrl。
初始化:
 // 插入列表控件纵列
 m_listctrl.InsertColumn(0, "ID", LVCFMT_LEFT, 110);//第0列
 m_listctrl.InsertColumn(1, "Number", LVCFMT_LEFT, 110);//第1列
 m_listctrl.InsertColumn(2, "Name", LVCFMT_LEFT, 110);//第2列

 // 设置列表控件扩展样式为整行高亮,否则为第0列
 
m_listctrl.SetExtendedStyle(LVS_EX_FULLROWSELECT);
 
 int i;
 int nItem;
 CString f1, f2, f3;

 for(i=0;i<9;i++){
  // 格式化字符串
  f1.Format("SerialNum: %d", i+1);
  f2.Format("Row %d Column 2", i+1);
  f3.Format("Row %d Column 3", i+1);
  nItem=m_listctrl.InsertItem(i, f1);  //插入第0列
  m_listctrl.SetItemText(nItem, 1, f2);  // 插入第1列
  m_listctrl.SetItemText(nItem, 2, f3);  // 插入第2列
 }

 

常用操作:

//单击某一行,行号传递到IndexInFieldList(当前所在行)
void CTest100401Dlg::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult)
{
 // TODO: Add your control notification handler code here
 POSITION pos;
 pos = m_listctrl.GetFirstSelectedItemPosition();
 IndexInFieldList = m_listctrl.GetNextSelectedItem(pos);  // 得到项目索引

 *pResult = 0;
}

//获得总行数
m_listctrl.GetItemCount()

//读取当前行第一列
temp1=m_listctrl.GetItemText(IndexInFieldList,0);

//删除当前行
m_listctrl.DeleteItem(IndexInFieldList);

//插入新行
 int nitem;
 nitem=m_listctrl.InsertItem(IndexInFieldList-1,temp1);
 m_listctrl.SetItemText(nitem,1,temp2);
 m_listctrl.SetItemText(nitem,2,temp3);

// 使得IndexInFieldList-1位置处项目高亮显示并获得焦点
 UINT flag = LVIS_SELECTED|LVIS_FOCUSED;
 m_listctrl.SetItemState(IndexInFieldList, flag, flag);

 
原创粉丝点击