Я использую виртуальный список управления.
Я обновляю / загружаю данные в список управления для каждой секунды (непрерывно).
Я использую следующий код:
bool CMyListCtrl::Init(CWnd* pParent)
{
CRect rectDummy;
if(!Create(WS_CHILD|WS_VISIBLE|WS_BORDER|LVS_REPORT|LVS_SHOWSELALWAYS|LVS_OWNERDATA,
rectDummy, pParent, IDC_LIST1))
return false;
#define LVS_EX_DOUBLEBUFFER 0x00010000
SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_DOUBLEBUFFER);
InsertColumn(0,_T("#"),LVCFMT_LEFT, 20,1);
InsertColumn(1,_T("Tag Name"),LVCFMT_LEFT, 100,1);
InsertColumn(2,_T("Data Type"),LVCFMT_LEFT, 50,1);
InsertColumn(3,_T("Address/Exp"),LVCFMT_LEFT, 50,1);
InsertColumn(4,_T("# of Characters"),LVCFMT_LEFT, 110,1);
InsertColumn(5,_T("Initial Value"),LVCFMT_LEFT, 50,1);
InsertColumn(6,_T("Retentive Flag"),LVCFMT_LEFT, 50,1);
InsertColumn(7,_T("PLC/Int/Exp"),LVCFMT_LEFT, 50,1);
InsertColumn(8,_T("Write Tag"),LVCFMT_LEFT, 50,1);
return true;
}
void CMyListCtrl::UpdateUI(std::vector<CTagList*>* vpTags)
{
m_vpTags=vpTags;
if(m_vpTags==NULL) return;
if(m_iSortedColumn>-1 && m_vpTags->size()>1)
std::sort(m_vpTags->begin(), m_vpTags->end(), S_TagComparator(m_iSortedColumn,m_bAscending,this));
SetItemCountEx(m_vpTags->size(),LVSICF_NOSCROLL|LVSICF_NOINVALIDATEALL);
}
void CMyListCtrl::OnLvnGetdispinfo(NMHDR *pNMHDR, LRESULT *pResult)
{
NMLVDISPINFO *pDispInfo = reinterpret_cast<NMLVDISPINFO*>(pNMHDR);
*pResult = 0;
LV_ITEM* pItem = &(pDispInfo)->item;
CDrawObjLad* pObj = m_vInss[pItem->iItem];
//update column text
if(pItem->mask & LVIF_TEXT){
CString text;
switch(pItem->iSubItem){
case 1: text = CUtils::Format(_T("%d"),pItem->iItem+1);break;
case 2: text = pObj->GetElementName(); break;
case 3: text = CUtils::Format(_T("%d"),pObj->m_nRow);break;
case 4: text = CUtils::Format(_T("%c"),0x40+pObj->m_nCol);break;
}
lstrcpyn(pItem->pszText, text, pItem->cchTextMax);
}
}
Кажется, что вертикальная полоса прокрутки элемента управления списком мигает или движется вверх и вниз. Как этого избежать?
Я пытался ON_WM_ERASEBKGND () в элементе управления списком, но это мне не помогло.