MFC下CListCtrl的使用笔记

来源:互联网 发布:淘宝网元领小衫 编辑:程序博客网 时间:2024/05/27 03:27

在MFC中建立基于对话框的工程,仅保留确定取消按钮,添加CListCtrl控件并将其View属性修改为Report,并为其添加ID与控件变量m_ListCtrl,在对话框的OnInitDialog函数中添加如下代码:

m_ListCtrl.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);//初始化扩展风格//插入列标题LVCOLUMN lvColumn;lvColumn.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH;lvColumn.fmt = LVCFMT_LEFT;lvColumn.cx = 90;lvColumn.pszText = _T("SAR_X");m_ListCtrl.InsertColumn(0, &lvColumn);//第一列lvColumn.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH;lvColumn.fmt = LVCFMT_LEFT;lvColumn.cx = 90;lvColumn.pszText = _T("SAR_Y");m_ListCtrl.InsertColumn(0, &lvColumn);//第二列lvColumn.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH;lvColumn.fmt = LVCFMT_LEFT;lvColumn.cx = 90;lvColumn.pszText = _T("MAP_X");m_ListCtrl.InsertColumn(0, &lvColumn);//第三列lvColumn.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH;lvColumn.fmt = LVCFMT_LEFT;lvColumn.cx = 90;lvColumn.pszText = _T("MAP_Y");m_ListCtrl.InsertColumn(0, &lvColumn);//第四列lvColumn.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH;lvColumn.fmt = LVCFMT_LEFT;lvColumn.cx = 90;lvColumn.pszText = _T("Error_X");m_ListCtrl.InsertColumn(0, &lvColumn);//第五列lvColumn.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH;lvColumn.fmt = LVCFMT_LEFT;lvColumn.cx = 90;lvColumn.pszText = _T("Error_Y");m_ListCtrl.InsertColumn(0, &lvColumn);//第六列


在对话框上添加按钮,点击按钮添加数据主要代码如下:

int nCount = ListControl.GetItemCount();//获取当前已插入的行数ListControl.InsertItem(nCount, _T(""));//插入一行ListControl.SetItemText(nCount, 0, SAR_X);//第一列ListControl.SetItemText(nCount, 1, SAR_Y);//第二列ListControl.SetItemText(nCount, 2, MAP_X);//第三列ListControl.SetItemText(nCount, 3, MAP_Y);//第四列

获取当前选择项,在CListCtrl空间属性中添加OnNMClickList这一函数,并将一下代码添加到函数中,即可实现左键单击获取到当前选择项,然后可以在该函数下进行其他相应处理

1.

POSITION p = ListControl.GetFirstSelectedItemPosition();//获取当前选中的行的第一行的位置//获取选中的第一行的行索引int nIndex = ListControl.GetNextSelectedItem(p);//可能多选,GetNextSelectedItem使p移动一个位置//得到第index行.第2列的内容(下标从0开始)CString strColumn = ListControl.GetItemText(nIndex,1);

2.

int nIndex=ListControl.GetSelectionMark();//获取选中的行CString strPID =ListControl.GetItemText(nIndex, 1); //选中的行、列的值



0 0