我正在尝试创建一个自定义控件,显示每像素alphablend的位图(正如你们其他人已经知道的其他问题)。
现在我在资源编辑器中使用自定义控件,并将其附加到从CWnd派生的类中。当我注册我的自定义类时,我将WNDCLASS structe的hbrBackground设置为NULL_BRUSH以获得控件的透明度。
在控件的OnPaint中,我使用AlphaBlend绘制每像素alpha混合位图。
这很有效,但我有两个问题:
我想在鼠标悬停在控件上时更改显示的位图。由于控件是透明的,因此不会擦除一个位图与另一个位图不重叠的区域。如何在图像更改时删除背景?
第二个问题与两个重叠控件有关。我的控件被绘制在具有渐变的其他控件上(实际上是在其他控件内)。问题是,如果我之前将控件放在z顺序中,则其他控件与我的控件重叠,并且不会显示我的控件。如果我之前将其他控件放在z顺序中,则无法在我的控件中获取鼠标消息。
也许我做错了什么,或者我错误地想要实现我的控制。任何形式的帮助将不胜感激。
谢谢,
Javier
答案 0 :(得分:1)
我会抓住机会。 : - )
这应该为你提供完成我想你想要的所有东西。
General Solution for Transparent Controls
就Z顺序问题而言,z顺序不会影响邮件优先级。您需要发布一些代码,以便我们确定那里发生了什么。