Private Declare Function CreateRoundRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long) As Long
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Private Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
Public Sub RoundCorners(ByRef oFrm As Form, Optional ByVal Angle As Byte = 15)
Dim lRet As Long
With oFrm
' on travaille en pixels
Dim lWidth As Long, lHeight As Long
lWidth = .ScaleX(.ScaleWidth, .ScaleMode, vbPixels)
lHeight = .ScaleY(.ScaleHeight, .ScaleMode, vbPixels)
' découpe
lRet = CreateRoundRectRgn(0, 0, lWidth, lHeight, Angle, Angle)
Call SetWindowRgn(.hwnd, lRet, True)
Call DeleteObject(lRet)
End With
End Sub