在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); //选中的行、列的值