Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mfc 强制更新虚拟CListCtrl_Mfc_Clistctrl - Fatal编程技术网

Mfc 强制更新虚拟CListCtrl

Mfc 强制更新虚拟CListCtrl,mfc,clistctrl,Mfc,Clistctrl,我有一个CListCtrl,包含大约2500个不同的元素,由48x48图标和文本组成 由于数据量很大,我将其实现为一个虚拟列表 ON_NOTIFY(LVN_GETDISPINFO, IDC_LST_ICONS, &CWGDIconSearchDlg::OnLvnGetdispinfoLstIcons) ON_NOTIFY(LVN_ODFINDITEM, IDC_LST_ICONS, &CWGDIconSearchDlg::OnLvnOdfinditemLstIcons) 我的问

我有一个CListCtrl,包含大约2500个不同的元素,由48x48图标和文本组成

由于数据量很大,我将其实现为一个虚拟列表

ON_NOTIFY(LVN_GETDISPINFO, IDC_LST_ICONS, &CWGDIconSearchDlg::OnLvnGetdispinfoLstIcons)
ON_NOTIFY(LVN_ODFINDITEM, IDC_LST_ICONS, &CWGDIconSearchDlg::OnLvnOdfinditemLstIcons)
我的问题是,当我更改列表内容时,这些回调从未被调用


如何强制执行此操作?

Windows无法知道您已更改虚拟列表中的项目


为了触发CListCtrl的重画,您必须调用
yourcontrol.Invalidate()
,这将触发控件的重新绘制。

下次使用代码标记。如果只有一个或几个项目发生更改,另一种方法是调用
重画项目(第一个、最后一个)
。这避免了有时通过重画整个控制窗口而产生的闪烁。