Windows的控件与对应类的关系:给每个控件关联了一个类,在类中封装相应的控件。ClistCtrl encapsulates the functionality of a “list view contrl”.list view control:displays a collection of items each consisting of an icon(from an image list)and a label.
创建:①拖拉控件的方式,相当于创建了一个ClistCtrl对象。②动态创建:构造ClistCtrl对象,其方式如图GDI的创建一样,先构造类对象,再创建list view control。在此可做个推断,所有和windows对象关联的类创建对象时都需要两步,先构造类对象,再创建windows对象将其关联起来。对GDI使用完后需销毁GDI对象,而list view control不用销毁。
列表视图控件可用四种不同方式显示其内容,称为视图。Icon、Small icon、List、Report。直观的理解:windows资源管理器,“查看”标签下的“大图标,小图标,列表,详细资料”。实际使用一般都是report。How:设置其view属性或代码设置其style。
改变style:ClistCtrl创建后可在任何时刻改变它的style。How:①SetView②GetWindowLong获得控件当前格式,然后SetWindowLong设置控件格式。
区分三个单词Column、Item、SubItem:column指列;item指行;subitem指子行,与item配合实用,即第item行第subitem列。要增加数据有两种方式:①一次插入一行或一列,再设置其值。②直接SetColumnWidth或SetItemCount插入n个行或列,再设置其值。
一直选中Item,即让选中行一直高亮显示,两种方式:①设属性Always show select为TRUE②添加扩展样式LVS_SHOWSELALWAYS。区别:①方式选中一行,再执行别的操作,该选中行的底色会变成暗灰色,更实用。②方式会一直以深蓝色显示。
得到单击的ClistCtrl的行列号:添加控件的NM_CLICK消息相应函数:
NM_LISTVIEW* pNMListView=(NM_LISTVIEW*)pNMHDR;
if(pNMListView->iItem!=-1)
{
CString strtemp;
strtemp.Format(_T("单击的是第%d行第%d列"),
pNMListView->iItem, pNMListView->iSubItem);
AfxMessageBox(strtemp);
}
*pResult = 0;
进行大数据量更新时,避免闪烁:
m_ListCtrl.SetRedraw(FALSE);
//更新内容
m_ListCtrl.SetRedraw(TRUE);
m_ListCtrl.Invalidate();
m_ListCtrl.UpdateWindow();
关于:一般在CListCtrl中,每列只能显示260个字符,多一个都会被截掉,但是取出来的数据却是正确的和可编辑子项的CListCtrl类 。