16,473
社区成员
原生的listctrl不好调整,需要花费大量时间,才能确保自绘的drawitem/lbuttondown等等不出问题。不如直接cwnd写一个算了,其实listctrl就是个data-list外加cwnd而已,我这个就是自定义的cwnd 里面内嵌了一个自定义的cwnd滚动条。
你要是不想花费大量时间,可以修改listctrl的滚动显示属性,就是让它固定显示n行内容。裁减掉自带的滚动条区间,再外加一个滚动条,然后绑定一个数据链表,当外部滚动条滚动时,自行调整listctrl所需要打印输出的特定行。这个方法的好处就是对于几十万行记录,不需要采用虚映射方式,自绘控件也不会卡涩。
否则就得检查裁剪可视化区域、滚动范围等等,反复调整。像你这样的情形,大多因为自绘滚动条引起的,就是简单说滚动区域计算不正确。还有就是有可能Draw的item高度和listctrl设定的高度不符合,也会有差异,比如你Drawitem的行高并不是系统认为的listctrl行高等等。