2008-10-12 69 views
1

在MFC应用程序中,有一个小的矩形区域,滚动条在窗口的右下方相遇。看起来这个区域只有在框架被调整大小时才会失效。在其他场合(例如,如果有另一个窗口被拖动),该区域不会重新绘制。使用MFC绘制滚动条的小问题

我已经能够在VS 6和2008中新创建的项目中重现它。我也看到一些商业应用程序出现同样的问题。重新创建它:

  1. 使用CScrollView派生视图创建一个新的SDI项目。
  2. 调整窗口大小,以便显示两个滚动条。
  3. 在该矩形上拖动另一个窗口以查看重绘问题。

任何想法如何摆脱这一点?

+0

我相信你的问题演示,特别是第3部分,有一个先决条件,即“拖动时显示窗口内容”被选中。 – tzot 2008-10-12 23:55:45

+0

不一定。您也可以简单地将第一个窗口(MFC程序)拖出屏幕并返回,并且矩形不会失效。 – 2008-10-13 05:32:11

回答

1

一个变通会套住条CscrollView的OnPaint方法,在这种方法中添加代码总是绘制客户端窗口的右下角。

但是这幅画代码还需要调用的GetDC得到一个新的CDC,以便它可以由WM_PAINT消息绕过BeginPaint的CDC传入的剪辑区域。