Вы не представляете, насколько проста эта проблема. Вы можете создать форму любой формы, но вам придется использовать два API CreateEllipticRgn и SetWindowRgn, например:
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
Изображение результата выполнения
Четыре параметра CreateEllipticRgn объясняются следующим образом:
X1: положение центральной точки эллипса по оси X, но ограничено реальной границей формы.
Y1: положение центральной точки эллипса по оси Y, но ограничено реальной границей формы.
X2: длина длинной стороны эллипса.
Y2: длина короткой стороны эллипса ->