当使用ListCtrl显示大量数据或频繁进行显示时,传统的显示方法不仅显示速度慢,而且会出现闪烁的问题,为了提高数据的时效性,选择使用了虚拟列表。
首先,设置Listctrl控件属性,将OwnerData属性修改为TRUE;然后为控件关联一个变量m_List。
初始化
CRect rect;
int Total_num=4;
m_List.ModifyStyle(WS_VSCROLL,0,0);
m_List.GetClientRect(&rect); // 获取编程语言列表视图控件的位置和大小
// 为列表视图控件添加全行选中和栅格风格
m_List.InsertColumn(0, _T("信号"), LVCFMT_CENTER, 2*rect.Width()/Total_num, 0);
m_List.InsertColumn(1, _T("数值"), LVCFMT_CENTER, 1*rect.Width()/Total_num, 1);
m_List.SetExtendedStyle(LVS_EX_FULLROWSELECT |LVS_EX_DOUBLEBUFFER| LVS_EX_GRIDLINES | LVS_EX_LABELTIP|LVIS_SELECTED|LVIS_FOCUSED);
添加LVN_GETDISPINFO消息,编辑OnLvnGetdispinfoList消息,将要显示的信息(行信息)放置于数组coloum1Text、coloum2Text中。
void CXXXDlg::OnLvnGetdispinfoList(NMHDR *pNMHDR, LRESULT *pResult)
{
//