Je perds la tête. Impossible de désactiver le bouton "fermer" d'une FORM

Résolu
306xshdi Messages postés 29 Date d'inscription mercredi 2 avril 2003 Statut Membre Dernière intervention 2 février 2007 - 20 févr. 2005 à 18:52
306xshdi Messages postés 29 Date d'inscription mercredi 2 avril 2003 Statut Membre Dernière intervention 2 février 2007 - 22 févr. 2005 à 08:34
Bonsoir,

C'est URGENT car je voudrais finir mon appli mais je perds la tête.
J'ai fait une appli sympa et je voudrais désactiver le bouton FERMER
d'une FORM. Malheureusement, je n'arrive pas à la trouver et je deviens
fou. J'ai trouvé pour le bouton MIN et MAX mais pas FERMER (la croix)
et pourtant, je l'ai déjà fait.

A l'aide SVP !!!!

A+

6 réponses

306xshdi Messages postés 29 Date d'inscription mercredi 2 avril 2003 Statut Membre Dernière intervention 2 février 2007
22 févr. 2005 à 08:34
Encore plus simple. Merci à son auteur !


<TABLE class=MsoNormalTable style="WIDTH: 98.96%; mso-cellspacing: 1.5pt" cellPadding=0 width="98%" border=0>

----,
[mailto:j-marc.rabilloud%20at%20ifp.fr Jean-Marc Rabilloud]

</TD></TR>
<TR style="mso-yfti-irow: 2; mso-yfti-lastrow: yes">
<TD style="BORDER-RIGHT: #000055 1pt solid; PADDING-RIGHT: 0cm; BORDER-TOP: #000055 1pt solid; PADDING-LEFT: 0cm; PADDING-BOTTOM: 3pt; BORDER-LEFT: #000055 1pt solid; PADDING-TOP: 3pt; BORDER-BOTTOM: #000055 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #000055 .75pt">
Placez tout d'abord ces déclarations dans le module de la form :




Private Const SC_CLOSE = &HF060&

Private Const MF_BYCOMMAND = &H0&



Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long

Private Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, _

ByVal wFlags As Long) As Long


Puis ces quelques lignes dans la procédure Form_Load :




Dim hSysMenu As Long

hSysMenu = GetSystemMenu(Me.hwnd, False)

RemoveMenu hSysMenu, SC_CLOSE, MF_BYCOMMAND

</TD></TR></TBODY></TABLE>
3
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
20 févr. 2005 à 19:02
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
If UnloadMode = 0 Then
Cancel = True
Else
CmdSauve
End If
End Sub

Daniel
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
20 févr. 2005 à 20:31
Ca c'est pour empêcher de la fermer, pas le désactiver ! Pour le
désactiver, il faut passer par les API Windows : récupèrer le handle du
menu système, puis supprimer le menu fermer.

DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
20 févr. 2005 à 21:41
Si c'est pas dérangeant tu peux le supprimer en cachant la barre de titre , borderstyle = none je crois




<hr size="2" width="100%">Si le cerveau était assez simple pour que nous puissions le comprendre,

nous serions assez bête pour ne pas le comprendre malgré tout.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Cracker Messages postés 82 Date d'inscription dimanche 9 septembre 2001 Statut Membre Dernière intervention 21 août 2006
21 févr. 2005 à 14:34
Ou alors, il suffit de mettre la propriété ControlBox = False dans la form !!
Celà enleve les 3 boutons (Fermer, Minimiser, Maximiser)

DarkSpirit

Chef du projet CDD, www.chroniquedesdamnes.fr.st
0
306xshdi Messages postés 29 Date d'inscription mercredi 2 avril 2003 Statut Membre Dernière intervention 2 février 2007
21 févr. 2005 à 16:41
Merci pour vos réponses. J'avais besoin du bouton "minimiser" dans la solution avec ControlBox=False ne m'allait pas. Donc je suis passé par l'API suivante:

Dans un module standard:

<HR>

'*****************************************
' Dans la partie déclaration du formulaire
'*****************************************
Private Const MF_BYPOSITION = &H400&

'Cette fonction API sert à prendre le menu qui apparaît lors du clic en haut à gauche du form (sous-menus "Restaurer", "Déplacer", "Réduire", "Fermer", ...)
Private Declare Function GetSystemMenu _
Lib "user32" _
(ByVal hwnd As Long, _
ByVal bRevert As Long) As Long

'Cette fonction API sert à enlever un de ces sous-menus
Private Declare Function RemoveMenu _
Lib "user32" (ByVal hMenu As Long, _
ByVal nPosition As Long, _
ByVal wFlags As Long) As Long

'Cette fonction API sert à connaître le nombre de sous-menus dans ce même menu
Private Declare Function GetMenuItemCount _
Lib "user32" _
(ByVal hMenu As Long) As Long

'*******************************************
' Dans la partie programmation du formulaire
'*******************************************
Public Sub DesactiverX(f_hwnd As Long)

Dim lSysMenu As Long
Dim lItemCount As Long
Dim lRet As Long

'Prend l'ID du menu
lSysMenu = GetSystemMenu(f_hwnd, False)

'Prend le nombre d'objet (sous-menus) du menu
lItemCount = GetMenuItemCount(lSysMenu)

'Suppression de sous-menu
lRet = RemoveMenu(lSysMenu, lItemCount - 1, MF_BYPOSITION)
lRet = RemoveMenu(lSysMenu, lItemCount - 2, MF_BYPOSITION)
lRet = RemoveMenu(lSysMenu, lItemCount - 3, MF_BYPOSITION)
lRet = RemoveMenu(lSysMenu, lItemCount - 4, MF_BYPOSITION)

End Sub<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />
<HR>
Ensuite, dans form_load, ajouter:

<HR>

DesactiverX Form1.hwnd 'avec Form1 le nom de la form où la croix doit être désactivée
<HR>
0
Rejoignez-nous