当前位置:  开发笔记 > 编程语言 > 正文

MFC列表控件滚动显示额外的网格线

如何解决《MFC列表控件滚动显示额外的网格线》经验,为你挑选了1个好方法。

我在报表视图中使用MFC列表控件和网格线以模糊的电子表格方式显示数据.

有时,当用户垂直滚动控件时,会绘制额外的网格线,这看起来很糟糕.

仅当使用滑块或鼠标滚轮滚动时才会发生这种情况,只有当使用滚动控件底部的小向下箭头按钮时才会发生这种情况.

当列表控件窗口的大小不是精确的偶数行时,似乎会发生这种情况,因此在底部可以看到部分行.

如果我调整列表控件的大小,以便没有可见的部分行,则问题就解决了.但是,当程序在另一台计算机上运行时会出现,可能是因为行占用的像素数发生了变化.

我假设它是屏幕分辨率,字体大小和"对话框单元"之间的交互.

我想我需要以编程方式强制控件在创建时的大小.但是大小呢?

我尝试过使用ApproximateViewRect()方法,但我无法让它工作.也许这种方法不了解报告视图?

我想,另一种方法是创建我自己的CListCtrl特化,并覆盖任何滚动方法.这似乎可能是很多工作.

此屏幕截图显示了一个密切相关的问题,其中网格线丢失

替代文字

这里有一个额外的网格线

替代文字

这两者之间以及它们之间的唯一区别是完全滚动的一个区别是控件的垂直尺寸不同的几个像素.



1> Aidan Ryan..:

这确实是一个与"平滑滚动"相关的错误,这是一个解决方法:

void CMyListCtrl::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
    __super::OnVScroll(nSBCode, nPos, pScrollBar);
    Invalidate();
    UpdateWindow();
}

推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有