Bueno este truco esta muy chido, pero siendo sinceros la mayoria de los casos solo la utilizaremos para hacer SplashScreens, en fin hay muchas formas de hacerlo pues solo menciono elipses, reectangulos y circulos, pero le dejo al lector de tarea crear formas irregulares, tal vez trapecios o hexagonos, etc. (a veces el API de Windows es tan rara!!!)
Código Delphi
[-]
procedure TForm1.FormCreate(Sender: TObject);
var
hRgn: THandle;
begin
hRgn := CreateEllipticRgn(10, 10, Width - 20, Height - 20);
SetWindowRgn(Handle, hRgn, False);
end;
Código para crear un form con un hoyo
procedure TForm1.FormCreate(Sender: TObject);
var
hRgn1, hRgn2: THandle;
begin
hRgn1 := CreateRectRgn(0, 0, Width, Height);
hRgn2 := CreateEllipticRgn((Width div 2) - 50, (Height div 2) - 50, (Width div 2) + 50, (Height div 2) + 50);
CombineRgn(hRgn1, hRgn1, hRgn2, RGN_DIFF);
SetWindowRgn(Handle, hRgn1, False);
DeleteObject(hRgn2);
end;