我在带有网格线的报表视图中使用 MFC 列表控件以模糊的电子表格方式显示数据。
有时当用户在控件中垂直滚动时,会绘制额外的网格线,这看起来很糟糕。
当使用滑块或鼠标滚轮滚动时不会发生这种情况,只有在使用滚动控件底部的小向下箭头按钮时才会发生这种情况。
当列表控制窗口的大小不是精确的偶数行时,似乎会发生这种情况,因此在底部可以看到部分行。
如果我调整列表控件的大小,使部分行不可见,问题就解决了。但是,当程序在另一台计算机上运行时,它会出现,大概是因为一行所占用的像素数发生了变化。
我假设这是屏幕分辨率、字体大小和“对话框单位”之间的交互。
我想我需要在创建控件时以编程方式强制它的大小。但是什么尺寸?
我曾尝试使用 ApproximateViewRect() 方法,但我无法让它工作。也许这种方法不知道报告视图?
我想,另一种方法是创建我自己的 CListCtrl 特化并覆盖任何进行滚动的方法。这似乎需要做很多工作。
此屏幕截图显示了一个密切相关的问题,即网格线丢失
这是一个带有额外网格线的
这两者之间以及它们与完美滚动的唯一区别是控件的垂直大小有几个像素不同。