Window Display Effects for VO: No. 2

Windows 2000 and higher support a feature to set the transparency of a window. This example shows how you can make the Windows Taskbar semi-transparent. While the taskbar is still visible any windows that are moved behind it still show through.

This same technique can be used on windows other than the taskbar as well.

 

METHOD Start() CLASS app
    // Sample to show how to make taskbar transparent (Win2000 and above)
    //
    // Paul Piko, December 2001
    // paul@piko.com.au
    // http://www.piko.com.au

    LOCAL hWnd AS PTR
    
    // Find the handle of the taskbar window
    hWnd := FindWindow(PSZ("Shell_TrayWnd"),NULL)
    
    // Set WS_EX_LAYERED on this window so that
    // SetLayeredWindowAttributes can be used on it
    SetWindowLong(hWnd, GWL_EXSTYLE, ;
           _or(GetWindowLong(hWnd, GWL_EXSTYLE),WS_EX_LAYERED))
    
    // Make the window (taskbar) 50% transparent
    // 0 means transparent, 255 means opaque
    SetLayeredWindowAttributes(hWnd, 0, INT(255 * 0.50), LWA_ALPHA)
    
    TextBox{,"","Done!"}:show()
DEFINE LWA_ALPHA := 0x00000002

DEFINE LWA_COLORKEY := 0x00000001

_DLL FUNC SetLayeredWindowAttributes(hWnd AS PTR, nColor AS INT, ;
               bAlpha AS INT, dwFlags AS DWORD);
               AS LOGIC PASCAL:USER32.SetLayeredWindowAttributes

DEFINE WS_EX_LAYERED := 0x00080000
Page generated from source code by VO Export Explorer,
one of the utilities in the VO Productivity Pack
http://www.piko.com.au