...
HBITMAP hDIB;
long * p_dib;
POINT ptSrc;
POINT ptWindow;
SIZE szWindow;
HDC hDCMemory;
BLENDFUNCTION blend;
ZeroMemory( &bmi, sizeof( BITMAPINFO ) );
bmi.bmiHeader.biSize = sizeof( BITMAPINFOHEADER );
bmi.bmiHeader.biWidth = 200; // ширина окна
bmi.bmiHeader.biHeight = -100; // высота (минус нужен для того, чтобы изображение бфло не upside-down)
bmi.bmiHeader.biPlanes = 1;
bmi.bmiHeader.biBitCount = 32;
bmi.bmiHeader.biCompression = BI_RGB;
hDIB = CreateDIBSection( GetDC( hWnd ), &bmi, DIB_RGB_COLORS, (void **)&p_dib, NULL, 0 );
... заполняем p_dib прозрачным изображением ...
ptSrc.x = 0;
ptSrc.y = 0;
ptWindow.x = x;
ptWindow.y = y;
szWindow.cx = width;
szWindow.cy = height;
hDCMemory = CreateCompatibleDC( NULL );
SelectObject( hDCMemory, hDIB );
blend.BlendOp = AC_SRC_OVER;
blend.BlendFlags = 0;
blend.SourceConstantAlpha = 255; // общая прозрачность окна
blend.AlphaFormat = AC_SRC_ALPHA;
UpdateLayeredWindow( hWnd, NULL, &ptWindow, &szWindow, hDCMemory, &ptSrc, 0, &blend, ULW_ALPHA );
...