MFC控件使用之ListCtrl

我们开始使用MFC编程了,只是临时用用,但是从没接触过怎么办?于是把编程过程中用到的方法之类的记录下来:

首先,当然是从工具箱拖放一个listctrl控件到窗口。

然后,给它关联一个control类型的变量m_list,不会?好吧,看好了,在控件上单击右键,选择添加变量,在弹出的添加控件变量对话框中找到名称这个编辑框,输入m_list,点击完成,之后就可以开车啦!

1、设置listctrl控件的样式以及扩展样式 样式在控件属性里可以设置,对话框的OnInitDialog方法中还可以再设置扩展样式 m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES); // 整行选择、网格线

括号中的内容可以设置以下的选项,用 “|” 隔开即可。 LVS_EX_CHECKBOXES      //每一行的最前面带个复选框 LVS_EX_FULLROWSELECT    //整行选中 LVS_EX_GRIDLINES       //网格线 LVS_EX_HEADERDRAGDROP  //列表头可以拖动

2、插入一整行 int InsertItem(int nItem, LPCTSTR lpszItem) nItem:插入到第几行 lpszItem:这一行第一列的文字 示例:m_list.InsertItem(0, “第一列的内容,可为空”);

3、插入一列 int InsertColumn(int nCol, LPCTSTR lpszColumnHeading, int nFormat = LVCFMT_LEFT, int nWidth = -1, int nSubItem = -1 ) nCol:插入到第几列 lpszColumnHeading:列名称 nFormat:列对齐方式,左中右 nWidth:列宽度 nSubItem:子项的索引与列,可省略。 示例:m_list.InsertColumn(3, “WindowTitle”, LVCFMT_CENTER, 100);

4、删除操作 删除一行:BOOL DeleteItem(nItem) nItem:行编号 示例:m_list.DeleteItem(5);

删除一列:BOOL DeleteColumn(nCol) nCol:列编号 示例:m_list.DeleteColumn(5);

删除所有列: 示例:while (m_list.DeleteColumn (0))

删除所有内容,列标题仍在:BOOL DeleteAllItems() 示例:m_list.DeleteAllItems();

5、更新数据 BOOL SetItemText( int nItem, int nSubItem, LPTSTR lpszText ); nItem:行序号 nSubItem:列序号 lpszText:需要更新的内容 示例:m_list.SetItemText(3, 1, “需要更新的内容”);

6、得到选中行的行号

多选: CString str; for(int i=0; i

       }
  }

单选: POSITION pos = m_list.GetFirstSelectedItemPosition(); if (pos == NULL) TRACE0(“No items were selected!\n”); else { while (pos) { int nItem = m_list.GetNextSelectedItem(pos); } }

7、移动滚动条使某一条隐藏的记录显示出来 BOOL EnsureVisible(int nItem,BOOL bPartialOK ); nItem:需要显示的记录的行号 bPartialOK:布尔值 示例:m_list.EnsureVisible(i, FALSE);