用MFC画滚动条的小问题
Posted
技术标签:
【中文标题】用MFC画滚动条的小问题【英文标题】:Small problem with painting scroll bars with MFC 【发布时间】:2008-10-12 20:54:16 【问题描述】:在 MFC 应用程序中有一个小的矩形区域,滚动条在此处相遇(窗口的右下角)。似乎该区域仅在调整框架大小时才失效。在其他情况下(例如,如果另一个窗口被拖动到它上面),该区域不会重新绘制。
我已经能够在 VS 6 和 2008 的新创建项目中重现它。我也看到一些商业应用程序有同样的问题。要重新创建它:
-
使用 CScrollView 派生视图创建一个新的 SDI 项目。
调整窗口大小以显示两个滚动条。
在该矩形上拖动另一个窗口以查看重绘问题。
任何想法如何摆脱这个?
【问题讨论】:
我相信您的问题演示,尤其是第 3 部分,具有选择“拖动时显示窗口内容”的先决条件。 不一定。您也可以简单地将第一个窗口(MFC 程序)拖离屏幕并返回,矩形不会失效。 【参考方案1】:一个解决方法是捕获 CScrollView 的 OnPaint 方法,并在此方法中添加代码以始终绘制底部角客户端窗口。
但是这个绘制代码还需要调用 GetDC 来获得一个新的 CDC,这样它就可以绕过 BeginPaint 的剪切区域> CDC 由 WM_PAINT 消息传入。
【讨论】:
谢谢,我可能最终会这样做。我只是认为有一些“标准”修复,因为这似乎是一个很常见的问题。以上是关于用MFC画滚动条的小问题的主要内容,如果未能解决你的问题,请参考以下文章