WindowsBlinds seems to be able to do this as in this screen shot:
http://www.stardock.com/products/windowblinds/wb5-3[1].jpg
As you say, UpdateLayeredWindow() is what has per-pixel alpha, but it does
not support child controls. But WindowBlinds only has the per-pixel alpha
blending in the frame surrounding the window. Maybe they create a separate
translucent window slightly bigger than the original and lay it behind the
original? So it looks like the original has the extra frame around it, but
it really is a new window peaking out behind it?
-- David
David,
I tried that already. There is an issue of keeping the window positions
syncronized, there is always a lag between the two when you move them around
especially in full window drag mode.
> Is it possible to only alpha-blend portions of a window? for example, just
> the frame?
Yes, you can change alpha level for any pixel after CreateDIBSection()
A quick test gives =>
http://www.upithere.com/view/1853.html
Christian,
Do you have source or an executable demo somewhere? I'm not quite sure what
you mean by this. Is this using UpdatedLayeredWindow() or
SetLayeredWindowAttributes()?
> Do you have source or an executable demo somewhere? I'm not quite sure what
> you mean by this. Is this using UpdatedLayeredWindow() or
> SetLayeredWindowAttributes()?
In fact, it's not interesting because it's with UpdateLayeredWindow()
and not very useful as you said in your case (WM_PRINT for child
controls)...
There is no need for a 2nd window. You simply draw straight onto the
non-client area during a WM_NCPAINT event.
I think you can make the title bar and border bigger and smaller by
adjusting some system parameters first.
What do you mean? I know I can draw directly onto the frame during a
WM_NCPAINT, but as we already discussed in this thread,
SetLayeredWindowAttributes doesn't seem to support per-pixel alpha-blending,
only the source constant alpha blending, so if I specify alpha=128, the
whole window is going to be alphablended at 128 including the client area.
UpdatedLayeredWindow supports per pixel alpha-blending, but it doesn't
support child windows and it requires redirecting all painting to an
offscreen DC which may not even be possible. Making the title bar and border
bigger is easy through WM_NCCALCSIZE.