如何在对话框控件上绘制PNG

时间:2011-07-23 05:08:06

标签: visual-studio mfc window gdi+

我需要在对话框的控件上做一些像SEMI透明玻璃层的东西。上下文是我的应用程序等待一个漫长的过程来完成所有其他需要被禁用的控件,并且动画在玻璃层上显示为等待动画。

我将绘制一个半透明的PNG图像,其大小为客户区,与所有其他控件重叠。我在OnPaint()中绘图,但图像被绘制为对话框的背景。

所以我的问题是如何绘制png图像重叠对话框的控件?

逻辑资源

1 个答案:

答案 0 :(得分:2)

您可以尝试摆弄WS_CLIPCHILDREN和WS_CLIPSIBLINGS样式,但我不确定它是否有效。我想你需要在所有其他控件(在z顺序堆栈的顶部)上绘制一个自定义控件,并在那个上绘制你的位图(这就是我要采用的方法 - 对话框应该在后面总是控制,所以你在对话框上绘图的方法就像对待系统一样。

所以基本上你会使用覆盖所有其他控件的自定义控件,但你甚至不需要透明地绘制它;您可以使用WS_EX_TRANSPARENT和/或WS_EX_LAYERED窗口样式和SetLayeredWindowAttributes()方法,只要您不需要支持早于win2k的操作系统。