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

C++ 使用C+;在MFC中实现浮动半透明子窗口时遇到的问题+;,c++,mfc,C++,Mfc,我试过几种方法,但问题总是存在的。有时子窗口没有刷新,有时子窗口会一直闪烁。 这是我写的一个示例项目 我的实现方法是: 在子窗口的顶部放置一个滚动条,每当拖动滚动条时,子窗口也会移动 每个对话框都继承自CDialogBase,所有的绘图都是在这个类中完成的,Drawer.h是绘图的助手。 只有当用户分配的DC变脏时,系统才会重新绘制窗口,它用于加速绘制。您是否考虑过使用WS_EX_LAYERED,然后使用UpdateLayeredWindow。它可能会变得相当复杂,但允许像每像素alpha这样

我试过几种方法,但问题总是存在的。有时子窗口没有刷新,有时子窗口会一直闪烁。 这是我写的一个示例项目

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

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

您是否考虑过使用WS_EX_LAYERED,然后使用UpdateLayeredWindow。它可能会变得相当复杂,但允许像每像素alpha这样的东西,并消除您所看到的闪烁

看这里:


更多信息。

WS_EX_LAYERED只能添加到顶层窗口,不能添加到子窗口;我尝试过将窗口样式从WS_CHILD修改为WS_OVERLAPPED,然后使用layed window,然后剪裁窗口的可见区域,但是,结果不是我所期望的

无论在哪里,谢谢你的建议