Fenêtre sans bordure

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
pat
Messages : 411
Inscription : mar. 24/nov./2009 15:13

Fenêtre sans bordure

Message par pat »

Bonjour à tous,
Avec OpenWindow(----,#PB_Bordeless) la fenêtre n'a pas de bordure.
C'est OK mais je souhaite faire des opérations sur une fenêtre normale avec bordure, ne pas la fermer et supprimer après la bordure.
Doit-on utiliser SetWindowLong_(----).
Mais que doit-on mettre pour que la fenêtre n'ai plus de bordure et également pour remettre la bordure ?
Merci à ceux qui savent de donner un élément de réponse, qui servira également aux autres utilisateurs de PB.
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Fenêtre sans bordure

Message par MLD »

Salut pat

Voici la moitié de ton problème, mais pour revenir a la fenêtre avec bordure ce n'est pas évident, et je n'est pas trop le temp, mais d'autres trouverons surement.

Code : Tout sélectionner

Procedure change()
  SetWindowLongPtr_(WindowID(0),#GWL_STYLE,GetWindowLongPtr_(WindowID(0),#GWL_STYLE)&~#WS_BORDER)   
 EndProcedure  

If OpenWindow(0,0,0,500,250,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
 
  ButtonGadget(1, 20, 150, 80, 40,"Change")

  Repeat 
   Event = WaitWindowEvent()
    
    If Event = #PB_Event_Gadget

      Select EventGadget()
        Case 1
          Select EventType()
          Case #PB_EventType_LeftClick
            change()
         EndSelect   
      EndSelect
    EndIf  
    
  Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf


a plus
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

Re: Fenêtre sans bordure

Message par kernadec »

bonjour
Ce code de RASHAD est cool :D on bascule avec F12 (sous Window)
http://www.purebasic.fr/english/viewtop ... 13&t=60287

Cordialement
Lord Nelson
Messages : 355
Inscription : dim. 01/déc./2013 15:29

Re: Fenêtre sans bordure

Message par Lord Nelson »

Salut,

Code : Tout sélectionner

Procedure DisableWindowsBorder(WindowNomber.i, State.i)
; On r�cup�re le style de la fen�tre
  Style = GetWindowLongPtr_(WindowID(WindowNomber), #GWL_STYLE)
  ; On modifie le style
  If State = #False
    SetWindowLongPtr_(WindowID(WindowNomber), #GWL_STYLE, Style | #WS_TILEDWINDOW)
  ElseIf State = #True
    SetWindowLongPtr_(WindowID(WindowNomber), #GWL_STYLE, Style & ~#WS_TILEDWINDOW)
  Else 
    SetWindowLongPtr_(WindowID(WindowNomber), #GWL_STYLE, Style | #WS_TILEDWINDOW)
  EndIf
EndProcedure

If OpenWindow(0, 0, 0, 150, 100, "Abc", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  ButtonGadget(1, 10, 10, 100, 25, "Avec Bordure")
  ButtonGadget(2, 10, 40, 100, 25, "Sans Bordure")
  
  Repeat
    
    Event = WaitWindowEvent()
    
    Select Event
        
      Case #PB_Event_Gadget
        
        Select EventGadget()
            
          Case 1 
            DisableWindowsBorder(0, #False)
            ResizeWindow(0, #PB_Ignore, #PB_Ignore, #PB_Ignore, #PB_Ignore)
            
          Case 2
            DisableWindowsBorder(0, #True)
            ResizeWindow(0, #PB_Ignore, #PB_Ignore, #PB_Ignore, #PB_Ignore)
            
        EndSelect
        
    EndSelect
    
  Until Event = #PB_Event_CloseWindow
  
EndIf
pat
Messages : 411
Inscription : mar. 24/nov./2009 15:13

Re: Fenêtre sans bordure

Message par pat »

Merci à tous pour vos réponses respectives.
Je vais regarder ça de plus prêt mais je suis sûr que cela fonctionne.
Merci encore.
Répondre