Bonjour a tous
voila une nouvelle version plus propre de ma fonction skiner
(découpage d'un userform en fonction de son image en supprimant ce qui correspond a une couleur spécifié en argument )
j'ai intégré aussi la possibilité de rendre le userform translucide
code:
Dans un module standard
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Option Explicit
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'appel au apis de windows
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Fonction pour acquérir le handle de la fenêtre
Public Declare Function FWw Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
'Fonction pour appliquer les parametres sur la fenetre
Public Declare Function SWLg Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
' fonction pour redessiner la fenêtre avec ses nouveau paramètres
Public Declare Function DrMBar Lib "user32" Alias "DrawMenuBar" (ByVal hWnd As Long) As Long
'fonction pour déterminer ce qui doit être supprimé( couleur )
Public Declare Function SLWA Lib "user32" Alias "SetLayeredWindowAttributes" (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Long, ByVal dwFlags As Long) As Long
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Fonction pour REDONNE LA POSSIBILITE DE POUVOIR DEPLACER L USERFORM AVEC LA SOURIS
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Function ReleaseCapture Lib "user32" () As Long
 
Public hWnd As Long    'variable qui va nous servir a déterminer le handle de la fenêtre
 
Public Function dessine_skin(uf As Object, colors As Variant, Optional skin As Variant = True)
    hWnd = FWw(vbNullString, uf.Caption)    ' on détermine le hande(poignée)le de la fenêtre
'avant les deux premiers  points on supprime la captions après on supprime le cadre fin restant
'après le 2eme double point on redessine la fenêtre (recadrage )
    SWLg hWnd, -16, &H80080080: SWLg hWnd, -20, &H80000: DrMBar hWnd
    Select Case skin
    Case True    ''fait disparaitre  tout ce qui est = a la couleur spécifié avec colors en argument  dans le userform
        SLWA hWnd, colors, &H2, &H1
    Case False    'tout devient translucide (de 0 a 255 pour le degré de transparence )
        SLWA hWnd, colors, 50, &H2
    End Select
End Function
'et dans le userform pour appeller la fonction
dans cet exemple c'est la couleur blanche "par l'argument"vbwhite" qui sera decoupée
mettre false en 3 argument pour utiliser la transparence ou false pour decouper
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
'Private Sub UserForm_Initialize()
'dessine_skin Me, vbWhite, True 'true pour decouper la couleur spécifiée en 3meme argument :false pour rendre translucidela totalité
'End Sub
voila le code est plus propre plus court

Au plaisir