cestlecoeur
Messages postés11Date d'inscriptiondimanche 6 janvier 2008StatutMembreDernière intervention 8 décembre 2008
-
21 nov. 2008 à 20:25
cestlecoeur
Messages postés11Date d'inscriptiondimanche 6 janvier 2008StatutMembreDernière intervention 8 décembre 2008
-
22 nov. 2008 à 12:28
Bonjour
Je souhaiterais griser la croix (non utilisable) ou ne pas la faire apparaitre lors de l'ouverture d'un userform.
Cela vous parait il réalisable ?
cestlecoeur
Messages postés11Date d'inscriptiondimanche 6 janvier 2008StatutMembreDernière intervention 8 décembre 2008 22 nov. 2008 à 12:28
ca marche ... encore merci et désolé ...
Je tenterais de poser la question au bonne endroit bien que je n'ai pas trouver encore pour le VBA ...
désolé je suis blonde ...
Private Declare Function GetWindowLongA Lib "user32" _
(ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLongA Lib "user32" _
(ByVal hwnd As Long, ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Private Declare Function FindWindowA Lib "user32" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
' *** Placer cette procédure aussi dans le
UserForm
' dont la croix doit être
supprimée
Private Sub UserForm_Initialize()
Dim hwnd As Long
hwnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", _
"X", "D") & "Frame", Me.Caption)
SetWindowLongA hwnd, -16, GetWindowLongA(hwnd, -16) And &HFFF7FFFF
End Sub
jmf0
Messages postés1566Date d'inscriptionmardi 26 décembre 2000StatutMembreDernière intervention 5 avril 20138 21 nov. 2008 à 21:53
Bonsoir,
Tu vas très vite comprendre l'intérêt de "poster" dans la bonne section... !
Tu as posté ici : Vous êtes ici : Thèmes / Visual Basic 6 / Divers
Je te réponds donc comme si tu développais en VB6 (je te crois...)
Option Explicit
Private Const SC_CLOSE = &HF060&
Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function DeleteMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Private Sub Form_Activate()
Dim sysmen As Long
sysmen = GetSystemMenu(Me.hwnd, 0)
DeleteMenu sysmen, SC_CLOSE, &H0&
End Sub
Ton problème, maintenant (juste pour le cas où tu ne développerais pas sous VB6, mais sous VBA) :
remplacer Me.hwnd (inconnu sous VBA) par un handle à extraire (c'est facile, mais je m'y refuse tant que la présente
discussion reste là où elle a été ouverte ...)
J'espère que ma réponse sera lue par le plus grand nombre et qu'elle donnera
à réfléchir sur l'intérêt réel et IMPORTANT d'ouvrir une discussion là où il convient de la faire
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 21 nov. 2008 à 23:56
en attendant tu as testé le bout de code que je t'ai fourni?
çà donne quoi?
s'il solutionne ton problème, pense à valider la réponse pour ceux qui chercheraient une question similaire (maintenant que ta question est re-placée)
jmf0
Messages postés1566Date d'inscriptionmardi 26 décembre 2000StatutMembreDernière intervention 5 avril 20138 22 nov. 2008 à 08:14
Bonjour (et un salut à PCPT),
Voilà donc (pour inhiber la croix en cause) mon code précédent transformé pour un UserForm VBA :
Option Explicit
Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function DeleteMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Const SC_CLOSE = &HF060&
Private Sub Form_Activate()
Dim monhwnd As Long
monhwnd = FindWindow(vbNullString, Me.Caption)
DeleteMenu GetSystemMenu(monhwnd, 0), SC_CLOSE, &H0&
End Sub
jmf0
Messages postés1566Date d'inscriptionmardi 26 décembre 2000StatutMembreDernière intervention 5 avril 20138 22 nov. 2008 à 08:22
Re
1) dans mon code : change bien sûr Form par UserForm
2) Je viens d'essayer le code de PCPT : il est plus élégant car il ne se contente pas d'inhiber la croix ==>> il la supprime purement et simplement. Je te le conseille donc.