Enlever le bouton fermer d'un formulaire [Résolu]

Signaler
Messages postés
132
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 mai 2017
-
Messages postés
257
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
22 décembre 2012
-
Bonjour à tous,

J'ai cherché sur différent site le moyen d'enlever ou désactiver le bouton "Fermer" d'un formulaire et malgré les exemples et explications cela ne fonctionne toujours pas.

Voici le contenu du code que j'ai mis (je l'ai récupéré sur le site Désactiver la X d'un formulaire.

Ça c'est que j'ai mis dans un module
Private Const MF_BYPOSITION = &H400
Private Const MF_REMOVE = &H1000

Public Declare Function DrawMenuBar Lib "user32" _
      (ByVal hwnd As Long) As Long
      
Public Declare Function GetMenuItemCount Lib "user32" _
      (ByVal hMenu As Long) As Long
      
Public Declare Function GetSystemMenu Lib "user32" _
      (ByVal hwnd As Long, _
       ByVal bRevert As Long) As Long
       
Public Declare Function RemoveMenu Lib "user32" _
      (ByVal hMenu As Long, _
       ByVal nPosition As Long, _
       ByVal wFlags As Long) As Long


Et ça c'est ce que j'ai mis au chargement du formulaire
   
   Dim hMenu As Long
   Dim menuItemCount As Long

  'Obtain the handle to the form's system menu
   hMenu = GetSystemMenu(Me.handle, 0)
  
   If hMenu Then
      
     'Obtain the number of items in the menu
      menuItemCount = GetMenuItemCount(hMenu)
    
     'Remove the system menu Close menu item.
     'The menu item is 0-based, so the last
     'item on the menu is menuItemCount - 1
      Call RemoveMenu(hMenu, menuItemCount - 1, _
                      MF_REMOVE Or MF_BYPOSITION)
   
     'Remove the system menu separator line
      Call RemoveMenu(hMenu, menuItemCount - 2, _
                      MF_REMOVE Or MF_BYPOSITION)
    
     'Force a redraw of the menu. This
     'refreshes the titlebar, dimming the X
      Call DrawMenuBar(Me.handle)

   End If


Si vous pouviez m'aider car là je ne comprend pas pourquoi il ne se passe rien.

Merci d'avance à tous.

7 réponses

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
me.handle

tu es donc en VB.NET

tu dois donc coder en .Net et non en VB6...

Long => Integer


public declare function drawmenubar lib "user32" _
(byval hwnd as Integer) as Integer

public declare function getmenuitemcount lib "user32" _
(byval hmenu as Integer) as Integer
etc.


Renfield - Admin CodeS-SourceS - MVP Visual Basic
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
testé en .Net, ca fonctionne nickel...

    Private Const MF_BYPOSITION = &H400
    Private Const MF_REMOVE = &H1000

    Public Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Integer) As Integer
    Public Declare Function GetMenuItemCount Lib "user32" (ByVal hmenu As Integer) As Integer
    Public Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Integer, ByVal brevert As Integer) As Integer
    Public Declare Function RemoveMenu Lib "user32" (ByVal hmenu As Integer, ByVal nposition As Integer, ByVal wflags As Integer) As Integer

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim hMenu As Integer
        Dim nCount As Integer

        hMenu = GetSystemMenu(Me.Handle, 0)
        If hMenu Then
            nCount = GetMenuItemCount(hMenu)
            RemoveMenu(hMenu, nCount - 1, MF_REMOVE Or MF_BYPOSITION)
            RemoveMenu(hMenu, nCount - 2, MF_REMOVE Or MF_BYPOSITION)
            DrawMenuBar(Me.Handle)
        End If
    End Sub



Renfield - Admin CodeS-SourceS - MVP Visual Basic
Messages postés
132
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 mai 2017

Merci pour vos réponses, j'ai opté pour celle de "PCPT" qui est plus simple à mettre en oeuvre.

En tout cas un grand merci à vous 2
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
plus simple, et surtout plus .NET ^^

Renfield - Admin CodeS-SourceS - MVP Visual Basic
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
je n'ai fait que donner le lien, c'est sebmafate qu'il faudrait remercier

ps : n'oublie pas de valider la ou les bonnes réponses pour fermer le sujet

[hr]
Messages postés
257
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
22 décembre 2012
1
Bonjour

Juste pour savoir si il y a moyen de supprimer les autres options du menu en question ? Réduire, Restaurer, Agrandir etc ?

Et comment après avoir supprimer le menu en place mettre le mien ?

D'avance Merci

La solution de PCPT fonctionne aussi sous VB 2008

007bidouille