使用C ++在MFC中实现浮点,半透明子窗口时遇到的问题

时间:2009-09-23 15:04:25

标签: c++ mfc

我尝试了几种方法,但问题总是存在的。有时子窗口没有刷新,有时子窗口会一直闪烁。 这是我写的一个示例项目 http://rapidshare.com/files/283950611/TestProject.7z.html

我的实现方法是: 在子窗口顶部放置一个滚动条,每当拖动滚动条时,子窗口也会移动。

每个对话框都继承自CDialogBase,所有的绘图都是在这个类中完成的,Drawer.h是绘图的助手。 只有当用户指定的DC变脏时,系统才会重绘窗口,用于加速绘画。

2 个答案:

答案 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,然后使用铺设窗口,然后剪切窗口的可见区域,但结果不是我所期望的。

任何地方,谢谢你的建议......