Voici la TourEiffel,il est dans le zip !!!!!
TourEiffel.zip (52,2 ko)
Source / Exemple :
Option Explicit
Private Declare Function CreatePolygonRgn Lib "gdi32" (lpPoint As POINTAPI, ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long
Private Declare Function CreateRectRgn Lib "gdi32" (ByVal x1 As Long, ByVal y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
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 CreateEllipticRgn Lib "gdi32" (ByVal x1 As Long, ByVal y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Private Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode 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
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function ReleaseCapture Lib "user32" () As Long
Private Type POINTAPI
X As Long
Y As Long
End Type
Private Const RGN_COPY = 5
Private Const CreatedBy = "VBSFC 6.2"
Private Const RegisteredTo = "Not Registered"
Private ResultRegion As Long
Private Function CreateFormRegion(ScaleX As Single, ScaleY As Single, OffsetX As Integer, OffsetY As Integer) As Long
Dim HolderRegion As Long, ObjectRegion As Long, nRet As Long, Counter As Integer
Dim PolyPoints() As POINTAPI
ResultRegion = CreateRectRgn(0, 0, 0, 0)
HolderRegion = CreateRectRgn(0, 0, 0, 0)
ReDim PolyPoints(0 To 44)
For Counter = 0 To 44
PolyPoints(Counter).X = GP0X(Counter) * ScaleX * 15 / Screen.TwipsPerPixelX + OffsetX
PolyPoints(Counter).Y = GP0Y(Counter) * ScaleY * 15 / Screen.TwipsPerPixelY + OffsetY
Next Counter
ObjectRegion = CreatePolygonRgn(PolyPoints(0), 45, 1)
nRet = CombineRgn(ResultRegion, ObjectRegion, ObjectRegion, RGN_COPY)
DeleteObject ObjectRegion
ReDim PolyPoints(0 To 4)
For Counter = 0 To 4
PolyPoints(Counter).X = GP1X(Counter) * ScaleX * 15 / Screen.TwipsPerPixelX + OffsetX
PolyPoints(Counter).Y = GP1Y(Counter) * ScaleY * 15 / Screen.TwipsPerPixelY + OffsetY
Next Counter
ObjectRegion = CreatePolygonRgn(PolyPoints(0), 5, 1)
nRet = CombineRgn(HolderRegion, ResultRegion, ResultRegion, RGN_COPY)
nRet = CombineRgn(ResultRegion, HolderRegion, ObjectRegion, 4)
DeleteObject ObjectRegion
DeleteObject HolderRegion
CreateFormRegion = ResultRegion
End Function
Private Function GP0X(Number As Integer) As Integer
Select Case Number
Case 0
GP0X = 118
Case 1
GP0X = 117
Case 2
GP0X = 109
Case 3
GP0X = 107
Case 4
GP0X = 112
Case 5
GP0X = 108
Case 6
GP0X = 102
Case 7
GP0X = 97
Case 8
GP0X = 98
Case 9
GP0X = 92
Case 10
GP0X = 94
Case 11
GP0X = 98
Case 12
GP0X = 80
Case 13
GP0X = 71
Case 14
GP0X = 68
Case 15
GP0X = 68
Case 16
GP0X = 39
Case 17
GP0X = 71
Case 18
GP0X = 85
Case 19
GP0X = 99
Case 20
GP0X = 114
Case 21
GP0X = 132
Case 22
GP0X = 149
Case 23
GP0X = 159
Case 24
GP0X = 172
Case 25
GP0X = 180
Case 26
GP0X = 211
Case 27
GP0X = 177
Case 28
GP0X = 180
Case 29
GP0X = 178
Case 30
GP0X = 170
Case 31
GP0X = 151
Case 32
GP0X = 154
Case 33
GP0X = 150
Case 34
GP0X = 145
Case 35
GP0X = 144
Case 36
GP0X = 140
Case 37
GP0X = 133
Case 38
GP0X = 128
Case 39
GP0X = 133
Case 40
GP0X = 132
Case 41
GP0X = 123
Case 42
GP0X = 122
Case 43
GP0X = 121
Case 44
GP0X = 117
End Select
End Function
Private Function GP0Y(Number As Integer) As Integer
Select Case Number
Case 0
GP0Y = 43
Case 1
GP0Y = 72
Case 2
GP0Y = 78
Case 3
GP0Y = 92
Case 4
GP0Y = 105
Case 5
GP0Y = 245
Case 6
GP0Y = 299
Case 7
GP0Y = 308
Case 8
GP0Y = 312
Case 9
GP0Y = 311
Case 10
GP0Y = 318
Case 11
GP0Y = 321
Case 12
GP0Y = 388
Case 13
GP0Y = 388
Case 14
GP0Y = 403
Case 15
GP0Y = 408
Case 16
GP0Y = 473
Case 17
GP0Y = 475
Case 18
GP0Y = 445
Case 19
GP0Y = 435
Case 20
GP0Y = 429
Case 21
GP0Y = 428
Case 22
GP0Y = 433
Case 23
GP0Y = 443
Case 24
GP0Y = 458
Case 25
GP0Y = 475
Case 26
GP0Y = 474
Case 27
GP0Y = 406
Case 28
GP0Y = 398
Case 29
GP0Y = 389
Case 30
GP0Y = 389
Case 31
GP0Y = 326
Case 32
GP0Y = 312
Case 33
GP0Y = 306
Case 34
GP0Y = 301
Case 35
GP0Y = 291
Case 36
GP0Y = 273
Case 37
GP0Y = 190
Case 38
GP0Y = 104
Case 39
GP0Y = 96
Case 40
GP0Y = 79
Case 41
GP0Y = 70
Case 42
GP0Y = 53
Case 43
GP0Y = 42
Case 44
GP0Y = 42
End Select
End Function
Private Function GP1X(Number As Integer) As Integer
Select Case Number
Case 0
GP1X = 113
Case 1
GP1X = 135
Case 2
GP1X = 142
Case 3
GP1X = 106
Case 4
GP1X = 112
End Select
End Function
Private Function GP1Y(Number As Integer) As Integer
Select Case Number
Case 0
GP1Y = 342
Case 1
GP1Y = 343
Case 2
GP1Y = 387
Case 3
GP1Y = 387
Case 4
GP1Y = 342
End Select
End Function
Private Sub Form_Load()
Dim nRet As Long
nRet = SetWindowRgn(Me.hWnd, CreateFormRegion(1, 1, 0, 0), True)
End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
ReleaseCapture
SendMessage Me.hWnd, &HA1, 2, 0&
End Sub
Private Sub Form_Unload(Cancel As Integer)
DeleteObject ResultRegion
End Sub
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.