Alpha Blending (Transparent) Windows

Environment: Windows 2000 VC 6.0 Newest Win32 API (Required)

IMPORTANT NOTE:

To compile this sample you must be running Windows 2000 and the latest WIN32 API which you can download from
Microsoft.
This program will only run under Windows 2000. It makes use of the new features of the OS.

The purpose of this example is to enable the new Alpha Blending features of Microsoft Windows 2000. It is very easy to do and hardly
needs a whole class to do it, but I felt a little cheesy just posting two function calls. 🙂

To use, add the CAlphaBlend class to your project. Modify the StdAfx.h file to contain the following lines right above the
#define VC_EXTRALEAN:

#define _WIN32_WINNT 0x0500
#define WINVER 0x0500

These lines will tell the compiler that it is for Windows NT 5.0 (better known as Windows 2000). They are critical and only work
if you have the newest Win32 API.

Then add the following lines of code before you display your window (or after you display it):

// assuming we are about to ShowWindow() in the MyApp.cpp of an SDI
CAlphaBlend ab(m_pMainWnd);
ab.SetTransparent();

This code can be called before or after a window is displayed. You can adjust the opacity (amount of transparency) with the constructor,
or the following function:

// valid ranges are 0-255, 255-being totally opaque (not transparent)
ab.SetOpacity(125);

// I found 220 does about the best blend.

One final note. The alpha blending in Windows 2000 is very slow. I have tried many different ways to optimize it and could never
get it any faster than it is. The only way I can think of is to handle the algorithm and thus the Alpha Blending myself. I don’t really
want to tackle that at the moment, so any optimizations any of you could make would be cool. Please let me know.

Downloads


Download demo project – 18 Kb


Download source – 2 Kb

More by Author

Get the Free Newsletter!

Subscribe to Developer Insider for top news, trends & analysis

Must Read