Page 1 sur 1

Fenêtre sans bordure

Publié : mar. 14/oct./2014 13:59
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.

Re: Fenêtre sans bordure

Publié : mer. 15/oct./2014 10:18
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

Re: Fenêtre sans bordure

Publié : mer. 15/oct./2014 10:47
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

Re: Fenêtre sans bordure

Publié : mer. 15/oct./2014 12:09
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

Re: Fenêtre sans bordure

Publié : mar. 21/oct./2014 13:19
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.