Combiné deux fonction dans un userform
Bien le bonjour,
Vola j'ai deux fonctions (qui ne sont pas de moi) que je voudrai mettre sur un UserFom
La première pour mettre un icone sur la barre de titre
La seconde pour ôter la croix pour fermer l'UserForm
Le problème est quand je met la seconde ça masque l'icone de la première donc je voudrai quelqu'un pour m'aider à mettre ces deux fonctions sur mon UserForm.
Option Explicit
'#Function pour ajouter un icone a la barre de titre
Private Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare PtrSafe Function SendMessageA Lib "user32" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, _
ByVal lParam As Long) As Long
Private Declare PtrSafe Function ExtractIconA Lib "shell32.dll" _
(ByVal hInst As Long, ByVal lpszExeFileName As String, ByVal nIconIndex As Long) As Long
'#Fin Function pour ajouter un icone a la barre de titre
'#Function pour masquer la croix
Private Declare PtrSafe Function GetWindowLongA Lib "user32" _
(ByVal hwndd As Long, ByVal nIndex As Long) As Long
Private Declare PtrSafe Function SetWindowLongA Lib "user32" _
(ByVal hwndd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare PtrSafe Function FindWindowA Lib "user32" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
'#Fin de la function masquer la croix
'#Fin#
Private Sub UserForm_Initialize()
Dim Fichier As String
Dim x As Long
OteCroix Me.Caption
'Chemin et nom du fichier icône à afficher
Fichier = "C:\Camping\IconeApp.ICO"
'Vérifie si le fichier existe
If Dir(Fichier) = "" Then Exit Sub
x = ExtractIconA(0, Fichier, 0)
SendMessageA FindWindow(vbNullString, Me.Caption), &H80, False, x
End Sub
'#Sub#
Private Sub OteCroix(Caption As String)
Dim hwnd As Long
hwnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", "X", "D") _
& "Frame", Caption)
SetWindowLongA hwnd, -16, GetWindowLongA(hwnd, -16) And &HFFF7FFFF
End Submerci a vous
- Messages
- 308
- Excel
- 2016
- Inscrit
- 15/06/2017
- Emploi
- Bénéficiaire de la sécurité de la vieillesse
Bonjour Don Pépé, bonjour le forum
Des bouts de code pioché sur le Net.
Penser à mettre un bouton pour fermer.
Option Explicit
'#Function pour ajouter un icone a la barre de titre
Private Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare PtrSafe Function SendMessageA Lib "user32" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, _
ByVal lParam As Long) As Long
Private Declare PtrSafe Function ExtractIconA Lib "shell32.dll" _
(ByVal hInst As Long, ByVal lpszExeFileName As String, ByVal nIconIndex As Long) As Long
'#Fin Function pour ajouter un icone a la barre de titre
Private Declare Function SetWindowLong& Lib "user32" Alias _
"SetWindowLongA" (ByVal hwnd&, ByVal nIndex&, ByVal dwNewLong&)
Private Declare Function ExtractIcon& Lib "shell32.dll" _
Alias "ExtractIconA" (ByVal hInst&, ByVal lpszExeFileName$, ByVal nIconIndex&)
Private Declare Function SendMessage& Lib "user32" Alias _
"SendMessageA" (ByVal hwnd&, ByVal wMsg&, ByVal wParam%, ByVal lParam As Any)
Private Declare Function GetSystemMenu& Lib "user32" _
(ByVal hwnd&, ByVal bRevert&)
Private Declare Function DrawMenuBar& Lib "user32" (ByVal hwnd&)
Private Declare Function DeleteMenu& Lib "user32" _
(ByVal hMenu&, ByVal nPosition&, ByVal wFlags&)
Private Sub UserForm_Initialize()
Dim hwnd&, IcoPath$, hIcon&
Dim Fichier As String
Dim x As Long
hwnd = FindWindow(vbNullString, Me.Caption)
IcoPath = ThisWorkbook.Path & "msn.ico"
If Len(Dir(IcoPath)) Then
hIcon = ExtractIcon(0, IcoPath, 0)
SendMessage hwnd, &H80, 0, hIcon
End If
DeleteMenu GetSystemMenu(hwnd, 0), &HF060, 0&
DrawMenuBar hwnd
'Chemin et nom du fichier icône à afficher
Fichier = "C:\Camping\IconeApp.ICO"
'Vérifie si le fichier existe
If Dir(Fichier) = "" Then Exit Sub
x = ExtractIconA(0, Fichier, 0)
SendMessageA FindWindow(vbNullString, Me.Caption), &H80, False, x
End Sub
Private Sub CommandButton1_Click()
End
End SubJoseph
Merci Joseph d'avoir pris le temps de me répondre, mais j'ai une dernière requête, les deux fonctions fonctionne bien mais le seul hic est
que la croix est juste grisé.
est-il possible de la faire disparaître totalement comme dans la fonction initial ??
Merci encre pour vôtre aide
- Messages
- 308
- Excel
- 2016
- Inscrit
- 15/06/2017
- Emploi
- Bénéficiaire de la sécurité de la vieillesse
Bonjour Don Pépé, bonjour le forum,
Non malheureusement, si on enlève complètement la croix, il ne semble pas possible de conserver l'icône.
C'est l'information unanime que j'ai trouvé sur les forums.
Joseph
Re,
Ok beh je vais faire avec. encore merci a toi pour ton aide
dernière question.
Peut être que l'on peu mettre la croix en blanc au lieu de la mettre en gris ??