Environment: Windows 2000 VC 6.0 Newest Win32 API (Required)
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.
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.
DownloadsDownload demo project - 18 Kb
Download source - 2 Kb