Thema: Delphi DWM Shadow

Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#2

AW: DWM Shadow

  Alt 19. Mär 2017, 00:16
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

Geändert von EWeiss (19. Mär 2017 um 00:22 Uhr)
  Mit Zitat antworten Zitat