【问题标题】:Small problem with painting scroll bars with MFC用MFC画滚动条的小问题
【发布时间】:2008-10-12 20:54:16
【问题描述】:

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

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

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

任何想法如何摆脱这个?

【问题讨论】:

  • 我相信您的问题演示,尤其是第 3 部分,具有选择“拖动时显示窗口内容”的先决条件。
  • 不一定。您也可以简单地将第一个窗口(MFC 程序)拖离屏幕并返回,矩形不会失效。

标签: visual-studio visual-c++ mfc


【解决方案1】:

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

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

【讨论】:

  • 谢谢,我可能最终会这样做。我只是认为有一些“标准”修复,因为这似乎是一个很常见的问题。
猜你喜欢
  • 1970-01-01
  • 2012-05-09
  • 2015-02-08
  • 1970-01-01
  • 2012-07-02
  • 1970-01-01
  • 1970-01-01
  • 2013-02-05
  • 2020-03-21
相关资源
最近更新 更多