Windows 2000 引入 WS_EX_LAYERED 延伸樣式,配合 SetLayeredWindowAttributes 即可輕鬆實現半透明效果:
void __fastcall TForm1::FormCreate(TObject *Sender)
{
long lRt = GetWindowLong(Handle, GWL_EXSTYLE);
lRt |= WS_EX_LAYERED;
SetWindowLong(Handle, GWL_EXSTYLE, lRt);
SetLayeredWindowAttributes(Handle, clBlue, 200, LWA_ALPHA); // 200/255 透明度
}
舊版 Windows 無分層視窗支援,需自行實現:
WM_PAINT 將桌面內容繪製至點陣圖(螢幕截圖)。BitBlt 輸出至螢幕。此法雖繁瑣,但可在不支援分層視窗的系統上實現透明效果。