Désactiver la croix de fermeture de fenêtre

Sujets variés concernant le développement en PureBasic
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Désactiver la croix de fermeture de fenêtre

Message par Anonyme2 »

J'ai pas trop envie de chercher (oui ça arrive :roll: ) alors si vous savez comment désactiver la croix de fermeture d'une fenêtre (en haut à droite) merci de me mettre un exemple :D
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

désactiver ??
ne pas l'afficher tu veux dire. ou mettre en gris le bouton ?
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Mettre en gris
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Si je me souviens bien, il faut désactiver le menu correspondant dans le système menu.
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Code : Tout sélectionner

    hSysMenu = GetSystemMenu_(WindowID(0), #False)
    nb = GetMenuItemCount_(hSysMenu)
    ;Tu peux utiliser #MF_DISABLED OU #MF_REMOVE
    RemoveMenu_(hSysMenu, nb - 1, #MF_REMOVE | #MF_BYPOSITION)
    RemoveMenu_(hSysMenu, nb - 2, #MF_REMOVE | #MF_BYPOSITION)
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Merci Nico,

je vais tester tout de suite :D
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

D'une manière générale, on fera ça:

Code : Tout sélectionner

    hSysMenu = GetSystemMenu_(WindowID(0), #False)
    RemoveMenu_(hSysMenu, #SC_CLOSE,#MF_BYCOMMAND)
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Après essai, remove supprime l'élément du menu et désactive bien la croix ou les autres boutons en fonction de la position, mais je ne suis pas parvenu à réctiver la croix avec removemenu (normal puisque l'élément a été supprimé).

J'avais besoin de désactiver la croix puis de la réctiver et j'ai fait comme ceci et ça marche impect.

Code : Tout sélectionner

      hSysMenu = GetSystemMenu_(WindowID(), #False)
      Nb = GetMenuItemCount_(hSysMenu)
            EnableMenuItem_(hSysMenu, Nb - 1, #MF_DISABLED | #MF_BYPOSITION)
            DrawMenuBar_(WindowID())
  

et pour réactiver

Code : Tout sélectionner

                        EnableMenuItem_(hSysMenu, Nb - 1, #MF_ENABLED | #MF_BYPOSITION)
                        DrawMenuBar_(WindowID())
KarLKoX
Messages : 1191
Inscription : jeu. 26/févr./2004 15:36
Localisation : France
Contact :

Message par KarLKoX »

Code : Tout sélectionner

Procedure SetMenuQuitState(OnOff.l)
        
        hSysMenu = GetSystemMenu_(WindowID(), #False)
        Nb = GetMenuItemCount_(hSysMenu)
        EnableMenuItem_(hSysMenu, Nb - 1, OnOff | #MF_BYPOSITION)
        DrawMenuBar_(WindowID()) 
        
EndProcedure

  
  OnOff = 0
  If OpenWindow(0, 200, 200, 200, 100, #PB_Window_SystemMenu, "Menu Example") And CreateGadgetList(WindowID(0)) 
    If CreateMenu(0, WindowID())    
      MenuTitle("Project") 
        MenuItem(1, "Open"   +Chr(9)+"Ctrl+O") 
        MenuItem(2, "Save"   +Chr(9)+"Ctrl+S") 
        MenuItem(3, "Save as"+Chr(9)+"Ctrl+A") 
        MenuItem(4, "Close"  +Chr(9)+"Ctrl+C") 
        
        ButtonGadget(5, 10, 10, 180, 20, "Standard Button") 
        
                            
    EndIf 
    Repeat 
      EventID = WaitWindowEvent()
      If EventID = #PB_Event_CloseWindow 
        Quit = 1
      ElseIf EventID = #PB_EventGadget
        If EventGadgetID() = 5
          If OnOff
            SetMenuQuitState(#false)
            OnOff = #false
          Else
            SetMenuQuitState(#True)
            OnOff = #true
          EndIf
        EndIf
      EndIf
    
    Until Quit
  EndIf 
"Qui baise trop bouffe un poil." P. Desproges
Répondre