So geht es.
Delphi-Quellcode:
function TSkinEngine.EnableShadow(WinHandle: hWnd): HRESULT;
var
Policy: LongInt;
begin
Result := -1;
if IsCompositionEnabled then
begin
Policy := DWMNCRP_ENABLED;
DwmSetWindowAttribute(WinHandle, DWMWA_NCRENDERING_POLICY, @Policy, SizeOf(Policy));
Result := DWM_ExtendFrameIntoClientArea(WinHandle, -1, -1, -1, -1);
end;
end;
irgendwie erschließt sich das mir nicht.
Meiner Meinung nach wäre das richtig.
Delphi-Quellcode:
var
Policy: TDWMNCRENDERINGPOLICY;
Dann bekomme ich aber keinen Schatten.
Bei dieser Version gibt es aber auch wieder ein Problem.
Sobald ich ein anderes Fenster öffne verschwindet der Schatten von meinem Window.
Seltsam das ganze.
Auch das ist seltsam funktioniert genauso mit dem vorher genannten Problem
DwmSetWindowAttribute(WinHandle, DWMWA_NCRENDERING_POLICY, @Policy, DWMWA_ALLOW_NCPAINT);
Irgendwie weis keiner was nun richtig übergeben werden muss.
Sobald irgendein anderes Fenster aktiviert wird ist der Schatten weg. (Auch das der
IDE)
gruss