Creating a triangular Form

Creating a triangular Form can be accomplished by using Windows Regions.  Specifically, the CreatePolygonRgn API function can be used to create a triangular region which can then be assigned as the region of a Form via the SetWindowRgn API function.  

KEYWORDS: SetWindowRgn, CreatePolygonRgn


 

//---------------------------------------------------------------------------
__fastcall TRegionForm::TRegionForm(TComponent* Owner) 
    : TForm(Owner) 

    // The parameters to CreatePolygonRgn are the array of 
    // points (relative to the Control whose Handle is passed 
    // to the SetWindowRgn function), the total number of points, 
    // and filling mode (WINDING or ALTERNATE). 
 

    TPoint P[3]; 
    P[0].x = 0; 
    P[0].y = 0; 
    P[1].x = Width; 
    P[1].y = 0; 
    P[2].x = static_cast<int>(Width / 2); 
    P[2].y = Height; 

    HRNG MyRgn = CreatePolygonRgn(P, 3, WINDING); 
    SetWindowRgn(Handle, MyRgn, true);

 


 
 

Usually, you'd need to call DeleteObject() for every region that you create.  However, once you assign a region as the region of a window via SetWindowRgn, there is no need to destroy it -- Windows will handle this automatically.