Você não imagina como é fácil esse problema. Você pode criar um Form de qualquer formato, mas deve usar as duas APIs CreateEllipticRgn e SetWindowRgn, por exemplo:
PRivateDeclareFunctionCreateEllipticRgnLib"gdi32"(ByValX1AsLong,ByValY1AsLong,ByValX2AsLong,ByValY2AsLong)AsLong
PrivateDeclareFunctionSetWindowRgnLib"user32"(ByValhWndAsLong,ByValhRgnAsLong,ByValbRedrawAsBoolean)AsLong
PrivateSubForm_Load()
DimlReturnAsLong
Eu.Mostrar
lReturn=SetWindowRgn(hWnd,CreateEllipticRgn(10,10,340,150),Verdadeiro)
Fim Sub
Imagem do resultado da execução
Os quatro parâmetros de CreateEllipticRgn são explicados a seguir:
X1: Posição no eixo X do ponto central da elipse, mas limitada ao limite real da Forma.
Y1: Posição no eixo Y do ponto central da elipse, mas limitada ao limite real da Forma.
X2: O comprimento do lado maior da elipse
Y2: O comprimento do lado curto da elipse ->