try
if Rgn<>0 then
if SetWindowRgn(AHandle, Rgn, True)<>0 then Result:=True;
finally
DeleteObject(Rgn);
end;
..
Windows.SetWindowRgn(pnl1.Handle, rgn, True);
DeleteObject(Rgn);
[/DELPHI]
Ein Hinweis:
Niemals nach SetWindowRgn die Rgn mit DeleteObject freigeben!!!!!
https://msdn.microsoft.com/de-de/lib...(v=vs.85).aspx
Zitat:
After a successful call to SetWindowRgn, the system owns the region specified by the region
handle hRgn. The system does not make a copy of the region. Thus, you should not make any further function calls with this region
handle. In particular, do not delete this region
handle. The system deletes the region
handle when it no longer needed.
Sprich, Windows wird OWNER der Rgn und gibt diese auch frei!!
Wenn Du diese jedoch direkt wieder frei gibs, kann dies zu unerwarteten Anzeigen führen!!
Das hatten wir auch schon einmal hier im Forum diskutiert...