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

johann36 132 Messages postés dimanche 15 février 2004Date d'inscription 9 mai 2017 Dernière intervention - 5 oct. 2009 à 10:09 - Dernière réponse : cs_bidouille007 263 Messages postés jeudi 11 septembre 2008Date d'inscription 22 décembre 2012 Dernière intervention
- 4 nov. 2009 à 01:36
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.
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 5 oct. 2009 à 13:40
3
Merci
salut,

autre manière ici :
http://www.codyx.org/snippet_desactiver-croix-fermeture-forme_24.aspx#108

++
[hr]

Merci PCPT 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de PCPT
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 5 oct. 2009 à 11:12
0
Merci
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
Commenter la réponse de Renfield
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 5 oct. 2009 à 11:18
0
Merci
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
Commenter la réponse de Renfield
johann36 132 Messages postés dimanche 15 février 2004Date d'inscription 9 mai 2017 Dernière intervention - 5 oct. 2009 à 16:33
0
Merci
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
Commenter la réponse de johann36
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 5 oct. 2009 à 16:35
0
Merci
plus simple, et surtout plus .NET ^^

Renfield - Admin CodeS-SourceS - MVP Visual Basic
Commenter la réponse de Renfield
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 5 oct. 2009 à 16:47
0
Merci
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]
Commenter la réponse de PCPT
cs_bidouille007 263 Messages postés jeudi 11 septembre 2008Date d'inscription 22 décembre 2012 Dernière intervention - 4 nov. 2009 à 01:36
0
Merci
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
Commenter la réponse de cs_bidouille007

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.