begin process at 2008 08 29 19:58:56
1 233 870 membres
392 nouveaux aujourd'hui
14 294 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Je perds la tête. Impossible de désactiver le bouton "fermer" d'une FORM [ Archives Visual Basic / J'AI BESOIN D'AIDE !!!! :) ] (306xshdi)

Je perds la tête. Impossible de désactiver le bouton "fermer" d'une FORM le 20/02/2005 18:52:00

306xshdi
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+

Re : Je perds la tête. Impossible de désactiver le bouton "fermer" d'une FORM le 20/02/2005 19:02:21

Gobillot
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    If UnloadMode = 0 Then
       Cancel = True
       Else
       CmdSauve
       End If
End Sub


Daniel

Re : Je perds la tête. Impossible de désactiver le bouton "fermer" d'une FORM le 20/02/2005 20:31:37

DARKSIDIOUS
Membre Club
(Admin CS)
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/

Re : Je perds la tête. Impossible de désactiver le bouton "fermer" d'une FORM le 20/02/2005 21:41:41

casy
Membre Club

Si c'est pas dérangeant tu peux le supprimer en cachant la barre de titre , borderstyle = none je crois



Si le cerveau était assez simple pour que nous puissions le comprendre,
nous serions assez bête pour ne pas le comprendre malgré tout.


Re : Je perds la tête. Impossible de désactiver le bouton "fermer" d'une FORM le 21/02/2005 14:34:22

Cracker
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

Re : Je perds la tête. Impossible de désactiver le bouton "fermer" d'une FORM le 21/02/2005 16:41:09

306xshdi
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:

'*****************************************
' 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


Ensuite, dans form_load, ajouter:

DesactiverX Form1.hwnd  'avec Form1 le nom de la form où la croix doit être désactivée


Re : Je perds la tête. Impossible de désactiver le bouton "fermer" d'une FORM le 22/02/2005 08:34:14

306xshdi
Réponse acceptée !

Encore plus simple. Merci à son auteur !

Comment désactiver le bouton de fermeture sur une form ?

auteur : Jean-Marc Rabilloud

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



Classé sous : bouton, tête, fermer, désactiver, perds

Participer à cet échange

Pub



Appels d'offres

Recherche developpeur ...
Budget : 700€
SITE MARCHAND LOCATION...
Budget : 3 000€
SITE MARCHAND POUR HOTEL
Budget : 4 000€

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS