创建自定义透明控件
问题描述:
我正在尝试创建一个自定义控件,用于显示每个像素alphablend的位图(就像其他一些人已经知道的那样)。创建自定义透明控件
现在我正在资源编辑器中使用自定义控件,并将其附加到从CWnd派生的类。当我注册我的自定义类时,我将WNDCLASS结构的hbrBackground设置为NULL_BRUSH,以实现控件的透明度。
在我使用的AlphaBlend画的每个像素的阿尔法混合位图控制的OnPaint中。
这工作得很好,但我有这样两个问题:
我想改变显示位图,当鼠标在控制。由于控件是透明的,一个位图不会被另一个位图重叠的区域不会被擦除。图像更改后如何擦除背景?
第二个问题与两个重叠控件有关。我的控制被绘制在具有渐变的其他控件上(实际上是在其他控件中)。问题是,如果我把我的控制在z顺序之前,其他控件重叠我的控制,我的不显示。如果我将其他控件放在z顺序中,我无法在我的控件中获取鼠标消息。
也许我做错了什么或者我错了我如何实现我的控制。任何形式的帮助,将不胜感激。
感谢,
哈维尔
答
我会把握机会。 :-)
这应该给你所有你需要来完成我想你想要的。
General Solution for Transparent Controls
至于Z顺序问题,z顺序不影响消息的优先级。您需要发布一些代码,以便我们确定发生了什么。