Abolition du menu système

Soyez le premier à donner votre avis sur cette source.

Snippet vu 8 208 fois - Téléchargée 68 fois

Contenu du snippet

Ces quelques lignes permettent de supprimer la petite croix en haut à droite, qui permet de fermer une fenête VB. En préparation, : La rallumer !

Source / Exemple :


Public Declare Function DrawMenuBar Lib "user32" (ByVal Hwnd As Long) As Long
Public Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags 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 Const MF_BYPOSITION = &H400
Public Const MF_REMOVE = &H1000
Public Function fctSupprimerFermerMenuSysteme(ByVal plngHwnd As Long) As Long
    Dim lngHmenu As Long
    Dim lngNombreElement As Long

    lngHmenu = GetSystemMenu(plngHwnd, 0)
    If lngHmenu Then
        lngNombreElement = GetMenuItemCount(lngHmenu)
    
        ' Suppression de l'élément Fermer
        Call RemoveMenu(lngHmenu, lngNombreElement - 1, MF_REMOVE Or MF_BYPOSITION)
        
        ' Suppression du séparateur
        Call RemoveMenu(lngHmenu, lngNombreElement - 2, MF_REMOVE Or MF_BYPOSITION)
    
        ' On redessine le menu
        Call DrawMenuBar(plngHwnd)
    End If
End Function

Conclusion :


J'aime pas les croix.... (Ni dieu,ni maître)

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1018
Date d'inscription
samedi 22 mars 2003
Statut
Membre
Dernière intervention
24 juin 2008

Grand merci , pas testé, mais je pense que c'est tout a fait ce que je cherchais. mes feuilles sont en dynamiques, sauf une qui doit toujours rester presente avec les données
Messages postés
40
Date d'inscription
mercredi 5 juin 2002
Statut
Membre
Dernière intervention
28 avril 2004

Intéressant pour un installateur maison ou pour des boites de dialogue qui peuvent être réduites sans être fermées.
Essayer aussi
Private Sub Form_QueryUnload(Cancel as Integer, UnloadMode As Integer)
If UnloadMode = 0 Then
Cancel = True
Me.Hide
End If
End Sub
Ceci sert à contrôler si l'utilisateur a choisi la Croix pour fermer la fenêtre : si c'est le cas, la fenêtre est masquée (donc on peut encore appeler des propriétés ou des méthodes de contrôles).
Messages postés
962
Date d'inscription
samedi 19 janvier 2002
Statut
Membre
Dernière intervention
2 août 2010

Pas mal mais sa serre pas a grand chose

Voilà pour supprimer et ajouter la croix sur un formulaire:

'Déclaration API
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
Private Declare Function RemoveMenu Lib "user32" (ByVal _
hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) _
As Long
Public Declare Function DrawMenuBar Lib "user32" (ByVal Hwnd As Long) As Long


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

Public Sub DisableClose(frm As Form, Optional Disable As Boolean = True)
'Setting Disable to False disables the 'X', otherwise, it's reset

Dim hMenu As Long
Dim nCount As Long

If Disable Then
hMenu = GetSystemMenu(frm.hwnd, False)
nCount = GetMenuItemCount(hMenu)

Call RemoveMenu(hMenu, nCount - 1, MF_REMOVE Or _
MF_BYPOSITION)
Call RemoveMenu(hMenu, nCount - 2, MF_REMOVE Or _
MF_BYPOSITION)

DrawMenuBar frm.hwnd
Else
GetSystemMenu frm.hwnd, True
DrawMenuBar frm.hwnd
End If

End Sub

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.