You can't imagine how easy it is to solve this problem. You can create a Form of any shape, but you must use the two APIs CreateEllipticRgn and SetWindowRgn, for example:
PRivateDeclareFunctionCreateEllipticRgnLib"gdi32"(ByValX1AsLong,ByValY1AsLong,ByValX2AsLong,ByValY2AsLong)AsLong
PrivateDeclareFunctionSetWindowRgnLib"user32"(ByValhWndAsLong,ByValhRgnAsLong,ByValbRedrawAsBoolean)AsLong
PrivateSubForm_Load()
DimlReturnAsLong
Me.Show
lReturn=SetWindowRgn(hWnd,CreateEllipticRgn(10,10,340,150),True)
EndSub
Execution result picture
The four parameters of CreateEllipticRgn are explained as follows:
X1: X-axis position of the center point of the ellipse, but limited to the real boundary of the Form.
Y1: Y-axis position of the center point of the ellipse, but limited to the real boundary of the Form.
X2: The length of the long side of the ellipse
Y2: The length of the short side of the ellipse ->