Windows 95 導入視窗區域概念,按鈕形狀可在執行期透過 API 設定。設計時按鈕仍為矩形,執行時套用區域即呈現異形。
CreateEllipticRgn、CreatePolygonRgn 等函數建立形狀區域。SetWindowRgn 將區域指派給按鈕視窗控制代碼。void __fastcall TForm1::FormCreate(TObject *Sender)
{
// 圓形按鈕 (按鈕設計為正方形)
HRGN hRgnR = CreateEllipticRgn(0, 0, RButton->Width, RButton->Height);
SetWindowRgn(RButton->Handle, hRgnR, TRUE);
// 三角形按鈕
TrPoint[0].x = TButton->Width / 2; TrPoint[0].y = 0;
TrPoint[1].x = 0; TrPoint[1].y = TButton->Height;
TrPoint[2].x = TButton->Width; TrPoint[2].y = TButton->Height;
HRGN hRgnT = CreatePolygonRgn(TrPoint, 3, ALTERNATE);
SetWindowRgn(TButton->Handle, hRgnT, TRUE);
}
private:
POINT TrPoint[3]; // 三角形三個頂點
crCross。TBitBtn 或 TSpeedButton 貼上點陣圖美化外觀。