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;

}

虽然能实现自动滑动条的自动滚动了,但是还有点瑕疵:

双击树状控件时,这里有一瞬间出现两行相同的。不到一秒时间吧,就恢复正常了:

      

不知道该怎么解决了,希望知道的帮帮忙了。。。。。

 

 

posted @ 2013-05-03 15:03  紫清婷  阅读(1298)  评论(0编辑  收藏  举报