|Windows Layers. See
SetLayeredWindowsAttributes in the Platform SDK at http://msdn.microsoft.com/library[^].
Odd. Both the
Form.Opacity use Windows Layers (see
SetLayeredWindowsAttributes in the Platform SDK at http://msdn.microsoft.com/library[^]) with either the
LWA_ALPHA flag, respectively. For transparency keys, a
COLORREF is used, which is a typedef for a
DWORD, a 32-bit unsigned integer. The
COLORREF documentation states that the high-order byte must be zero (the normal alpha byte) but as long as it is zero, I don't see why a graphics card in 32-bit mode would cause problems. Perhaps driver problems?
In any case, you can use the old way: window regions. You must override painting (override
OnPaint in your form) and set the
Graphic.Clip property to a region (use
GraphicsPath to create an odd region) that determines which region is valid for painting. Everything else is not painted and, hence, shows what's behind it. This was really the only way to do it before Window Layers, which is only supported in Windows 2000 and higher.
The thing that puzzles me is that Windows Media Player skins use a color mask. Logically, that color would be the transparency color used with Windows Layers. Perhaps they are only using that color to designate a clipped region.
-----BEGIN GEEK CODE BLOCK-----
GCS/G/MU d- s: a- C++++ UL@ P++(+++) L+(--) E--- W+++ N++ o+ K? w++++ O- M(+) V? PS-- PE Y++ PGP++ t++@ 5 X+++ R+@ tv+ b(-)>b++ DI++++ D+ G e++>+++ h---* r+++ y+++
-----END GEEK CODE BLOCK-----