MFC中 CListCtrl控件的使用及定位、选中
首先摆好ListCtrl控件,关联成员变量m_list1
在初始化中:
//列表控件
m_count=0; //列表控件的序号
CRect rect;
// 获取编程语言列表视图控件的位置和大小
m_list1.GetClientRect(&rect);
// 为列表视图控件添加全行选中和栅格风格
m_list1.SetExtendedStyle(m_list1.GetExtendedStyle() | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
// 为列表视图控件添加4列
m_list1.InsertColumn(0, _T("序号"), LVCFMT_CENTER, rect.Width()/10, 0);
m_list1.InsertColumn(1, _T("算法名称"), LVCFMT_CENTER, rect.Width()/4, 1);
m_list1.InsertColumn(2, _T("清晰度"), LVCFMT_CENTER, rect.Width()/4, 2);
m_list1.InsertColumn(3, _T("颜色个数"), LVCFMT_CENTER, rect.Width()/4, 3);
然后:
void CLXTDlg::OnDblclkTree1(NMHDR *pNMHDR, LRESULT *pResult)
{
HTREEITEM m_hTreeItem;
m_hTreeItem = m_tree1.GetSelectedItem();
CString S1 = m_tree1.GetItemText(m_hTreeItem);
CString str;
m_count++;
str.Format(_T("%d"),m_count); //整型转化为字符串
// 在列表视图控件中插入列表项,并设置列表子项文本
m_list1.InsertItem(m_count-1, _T(str));
m_list1.SetItemText(m_count-1, 1, _T(S1));
m_list1.SetItemText(m_count-1, 2, _T(S1));
m_list1.SetItemText(m_count-1, 3, _T(S1));
m_list1.EnsureVisible(m_count-1,FALSE); //不断向CListCtrl添加记录时,每添加一条,视图就自动滚动以便能看到刚插入的这条记录
m_list1.SetItemState(m_count-2,0, -1); //设置上一条记录不被选中
m_list1.SetItemState(m_count-1,LVIS_SELECTED|LVIS_ACTIVATING|LVIS_DROPHILITED , LVIS_SELECTED|LVIS_ACTIVATING|LVIS_DROPHILITED );//设置某一条记录被选中
..............
*pResult = 0;
}
虽然能实现自动滑动条的自动滚动了,但是还有点瑕疵:
双击树状控件时,这里有一瞬间出现两行相同的。不到一秒时间吧,就恢复正常了:
不知道该怎么解决了,希望知道的帮帮忙了。。。。。