<!-- Link to source file download -->
Download source files - 13 Kb
<!-- Link to demo file download -->
Download executable (MFC DLLs required) - 5 Kb
<!-- Add the rest of your HTML here -->
When I checked the newly available APIs for Windows 2000, I ran into layered windows, and after playing around with it for a while, I finally wrote this cute little program. It allows you to add transparency to any window, just by clicking on it with your mouse.
The core functionality is done in only 4 lines of code (6 if you include variable definitions). The rest is just wizard-generated MFC code.
First it finds the window under the current cursor position by using
WindowFromPoint, then it toggles its
WS_EX_LAYERED (new in W2k) style using
finally, it sets its transparency to a value (between 0 and 255) defined by a slider control.
SetLayeredWindowAttributes function is available only on Windows 2000, and is well-documented
in the current MSDN library. You can also use it for color-keying, i.e. to make pixels of a specific color completely transparent,
while leaving other pixels unchanged. The two effects can also be combined.
SetLayeredWindowAttributes is defined as follows:
HWND hwnd, COLORREF crKey, BYTE bAlpha, DWORD dwFlags );
SetLayeredWindowAttributes can also be used to fade in/out other windows, or to create irregularly formed windows (this was also possible using window regions, but that was much slower).
I personally use this program to make my Taskbar, ICQ and Winamp windows transparent, since these are always on top, and I prefer being able to see what happens behind them.