首先,当然是从工具箱拖放一个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<m_list.GetItemCount(); i )
{
if( m_list.GetItemState(i, LVIS_SELECTED) == LVIS_SELECTED )
{
str.Format(_T("选中了第%d行"), i);
AfxMessageBox(str);
}
}
单选:
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);