WM_LBUTTONDOWN:
// Die ListBox mit deren Handle auf den Desktop legen
SetParent(WinHandle, GetDesktopWindow);
//(alternativ für GetDesktopWindow einfach 0)
//TopMost festlegen um das TopLEvel Window zu erhalten
Skinengine.SetZorder(WinHandle, HWND_TOPMOST);
//Mouse Event Aufnehmen damit die Mausmessagen an die Layered ListBox weitergereicht werden.
SetCapture(WinHandle);
//Layered Attribute für die ListBox setzen
Skinengine.SetLayeredAlpha(WinHandle, 175);
....
WM_LBUTTONUP:
//Layered Style entfernen sonst sieht man die ListBox nicht mehr. (Child kann kein Layered Window haben)
OldStyle := GetWindowLong(WinHandle, GWL_EXSTYLE);
SetWindowLong(WinHandle, GWL_EXSTYLE, OldStyle
and (
not WS_EX_LAYERED));
//MouseEvents für die ListBox freigeben
ReleaseCapture;
// Vom Desktop zurück in die Hauptanwendung
SetParent(WinHandle, HParent);
// ListBox positionieren
SetWindowPos(WinHandle, HWND_TOP, FLeft, FTop, FWidth - FLeft, FHeight, SWP_NOACTIVATE);