1

在 MFC 应用程序中有一个小的矩形区域与滚动条相交(窗口的右下角)。似乎该区域仅在调整框架大小时才失效。在其他情况下(例如,如果另一个窗口被拖动到它上面),该区域不会重新绘制。

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

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

任何想法如何摆脱这个?

4

1 回答 1

1

一种解决方法是捕获CScrollView的OnPaint方法,并在此方法中添加代码以始终绘制客户端窗口的底角。

但是这个绘画代码还需要调用GetDC来获取一个新的CDC,这样它就可以绕过WM_PAINT消息传入的BeginPaint CDC的剪切区域。

于 2008-10-13T04:22:45.083 回答