我尝试了几种方法,但问题总是存在的。有时子窗口没有刷新,有时子窗口会一直闪烁。 这是我写的一个示例项目 http://rapidshare.com/files/283950611/TestProject.7z.html
我的实现方法是: 在子窗口顶部放置一个滚动条,每当拖动滚动条时,子窗口也会移动。
每个对话框都继承自CDialogBase,所有的绘图都是在这个类中完成的,Drawer.h是绘图的助手。 只有当用户指定的DC变脏时,系统才会重绘窗口,用于加速绘画。
答案 0 :(得分:0)
您是否考虑过使用WS_EX_LAYERED然后使用UpdateLayeredWindow。它可能变得非常复杂,但允许像每像素alpha那样的东西,并消除你所看到的闪烁。
看这里: http://www.nuonsoft.com/blog/2009/05/27/how-to-use-updatelayeredwindow/
了解更多信息。
答案 1 :(得分:0)
WS_EX_LAYERED只能添加到顶级窗口,而不是子窗口;我试图将窗口样式从WS_CHILD修改为WS_OVERLAPPED,然后使用铺设窗口,然后剪切窗口的可见区域,但结果不是我所期望的。
任何地方,谢谢你的建议......