- ' Je met un petit exemple avant (tout con mais bon) :
- Private Sub form_load ()
- DesactiveCroix Me.Hwnd ' Désactive la croix de la fenêtre actuelle
- ActiveCroix Me.Hwnd ' Réactive
- ' Je précise qu'il faut envoyer dans la fonction le handle de la fenêtre à manipuler.
- ' Pour trouver le handle d'une form d'un projet Visual Basic il faut utiliser ".Hwnd" après le nom de la form
- End Sub
-
-
- ' METTEZ TOUT çA DANS UN MODULE ET UTILISEZ LES FONCTIONS
- ' Déclare les API
- ' pour dégriser ou griser un item du menu sytème d'une fenêtre
- Declare Function EnableMenuItem Lib "user32" (ByVal hMenu As Long, ByVal wIDEnableItem As Long, ByVal wEnable As Long) As Long
- Public Declare Function GetSystemMenu Lib "user32" (ByVal HWnd As Long, ByVal bRevert As Long) As Long
- Public Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu 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 DrawMenuBar Lib "user32" (ByVal HWnd As Long) As Long
- Declare Function GetMenuItemID Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
- Public Const MF_BYPOSITION = &H400&
- Public Const MF_REMOVE = &H1000&
- Public Const SC_CLOSE = &HF060
-
-
- ' Fonctions :
- ' Réactive la croix fermer
- Public Function ActiveCroix(ByVal HWnd As Long) ' il faut lui préciser le handle de la fenêtre
- On Error Resume Next
- ' ici je dégrise grâce à true qui remet le menu à zéro
- hMenu = GetSystemMenu(HWnd, True)
- DrawMenuBar HWnd
- End Function
-
- ' Désactive la croix fermer
- Public Function DesactiveCroix(ByVal HWnd As Long)
- On Error Resume Next
- Dim hMenu As Long
- hMenu = GetSystemMenu(HWnd, 0)
- RemoveMenu hMenu, SC_CLOSE, MF_BYCOMMAND
- DrawMenuBar HWnd
- End Function
' Je met un petit exemple avant (tout con mais bon) :
Private Sub form_load ()
DesactiveCroix Me.Hwnd ' Désactive la croix de la fenêtre actuelle
ActiveCroix Me.Hwnd ' Réactive
' Je précise qu'il faut envoyer dans la fonction le handle de la fenêtre à manipuler.
' Pour trouver le handle d'une form d'un projet Visual Basic il faut utiliser ".Hwnd" après le nom de la form
End Sub
' METTEZ TOUT çA DANS UN MODULE ET UTILISEZ LES FONCTIONS
' Déclare les API
' pour dégriser ou griser un item du menu sytème d'une fenêtre
Declare Function EnableMenuItem Lib "user32" (ByVal hMenu As Long, ByVal wIDEnableItem As Long, ByVal wEnable As Long) As Long
Public Declare Function GetSystemMenu Lib "user32" (ByVal HWnd As Long, ByVal bRevert As Long) As Long
Public Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu 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 DrawMenuBar Lib "user32" (ByVal HWnd As Long) As Long
Declare Function GetMenuItemID Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
Public Const MF_BYPOSITION = &H400&
Public Const MF_REMOVE = &H1000&
Public Const SC_CLOSE = &HF060
' Fonctions :
' Réactive la croix fermer
Public Function ActiveCroix(ByVal HWnd As Long) ' il faut lui préciser le handle de la fenêtre
On Error Resume Next
' ici je dégrise grâce à true qui remet le menu à zéro
hMenu = GetSystemMenu(HWnd, True)
DrawMenuBar HWnd
End Function
' Désactive la croix fermer
Public Function DesactiveCroix(ByVal HWnd As Long)
On Error Resume Next
Dim hMenu As Long
hMenu = GetSystemMenu(HWnd, 0)
RemoveMenu hMenu, SC_CLOSE, MF_BYCOMMAND
DrawMenuBar HWnd
End Function