Page 1 sur 1

Window_SizeGadget sans bordure

Publié : ven. 18/nov./2016 18:03
par venom
Bonjour,

Voilà je viens de me rendre compte que si on met l'option #PB_Window_SizeGadget a une fenêtre sans bordure, cette dernière récupère la barre de titre. :? C'est possible de faire sans ?

En gros une fenêtre sans bordure mais redimensionnable ?

Voici un code avec #PB_Window_SizeGadget:

Code : Tout sélectionner

;- Window Constants
Enumeration
  #Window_0
EndEnumeration

;- gadgets Constants
Enumeration
  
EndEnumeration

  If OpenWindow(#Window_0, 0, 0, 800, 600, "", #PB_Window_BorderLess | #PB_Window_ScreenCentered |  #PB_Window_SizeGadget )
   ButtonGadget(0, 10, 10, 100, 20, "Close", 0)
  EndIf 

  Repeat
   EventID = WaitWindowEvent()
    If EventID = #PB_Event_Gadget
      Select EventGadget()
          
        Case 0
         End 

      EndSelect
    EndIf
  Until EventID = #PB_Event_CloseWindow
Retirer #PB_Window_SizeGadget vous comprendrez :wink:







@++

Re: Window_SizeGadget sans bordure

Publié : ven. 18/nov./2016 18:55
par Zorro
comme ça : :)

(voir ici : http://forums.purebasic.com/english/vie ... bfc4ef65d4 )

Code : Tout sélectionner

 ;- Window Constants
Enumeration
  #Win
EndEnumeration

;- gadgets Constants
Enumeration
 
EndEnumeration

  If OpenWindow(#Win, 0, 0, 800, 600, "", #PB_Window_BorderLess | #PB_Window_ScreenCentered |  #PB_Window_SizeGadget |#PB_Window_BorderLess)
  SetWindowLongPtr_(WindowID(0),#GWL_STYLE,GetWindowLongPtr_(WindowID(0),#GWL_STYLE)&~ #WS_CAPTION)
   ResizeWindow(#Win,GetSystemMetrics_(#SM_CXSCREEN)>>1 - 322>>1,GetSystemMetrics_(#SM_CYSCREEN)>>1 - 275>>1,322,275)
   ButtonGadget(0, 10, 10, 100, 20, "Close", 0)
  EndIf

  Repeat
   EventID = WaitWindowEvent()
    If EventID = #PB_Event_Gadget
      Select EventGadget()
         
        Case 0
         End

      EndSelect
    EndIf
  Until EventID = #PB_Event_CloseWindow 

Re: Window_SizeGadget sans bordure

Publié : ven. 18/nov./2016 19:00
par venom
Ah API :wink: merci





@++

Re: Window_SizeGadget sans bordure

Publié : sam. 19/nov./2016 19:20
par nico
On peut le faire sans api comme ça:

Code : Tout sélectionner

;- Window Constants
Enumeration
  #Window_0
EndEnumeration

;- gadgets Constants
Enumeration
  
EndEnumeration

If OpenWindow(#Window_0, 0, 0, 800, 600, "", #WS_THICKFRAME | #PB_Window_BorderLess | #PB_Window_ScreenCentered )
  ButtonGadget(0, 10, 10, 100, 20, "Close", 0)
EndIf 

Repeat
  EventID = WaitWindowEvent()
  If EventID = #PB_Event_Gadget
    Select EventGadget()
        
      Case 0
        End 
        
    EndSelect
  EndIf
Until EventID = #PB_Event_CloseWindow

Re: Window_SizeGadget sans bordure

Publié : sam. 19/nov./2016 20:36
par Zorro
nico a écrit :On peut le faire sans api comme ça:
ha bon ? "#WS_THICKFRAME " c'est pas de l'APi ? :)
la constante est valable pour Linux et MacOs ?

Re: Window_SizeGadget sans bordure

Publié : sam. 19/nov./2016 21:00
par venom
Tiens. Je ne connais pas cette constante
Après je ne demander pas sans api :wink:






@++

Re: Window_SizeGadget sans bordure

Publié : dim. 20/nov./2016 15:21
par Ar-S
#WS_THICKFRAME c'est du windows mais faut avouer que c'est bien plus simple que

Code : Tout sélectionner

SetWindowLongPtr_(WindowID(0),#GWL_STYLE,GetWindowLongPtr_(WindowID(0),#GWL_STYLE)&~ #WS_CAPTION)
   ResizeWindow(#Win,GetSystemMetrics_(#SM_CXSCREEN)>>1 - 322>>1,GetSystemMetrics_(#SM_CYSCREEN)>>1 - 275>>1,322,275)
Je ne connaissais pas non plus, je prends :D

Re: Window_SizeGadget sans bordure

Publié : dim. 20/nov./2016 17:49
par Zorro
Ar-S a écrit :#WS_THICKFRAME c'est du windows mais faut avouer que c'est bien plus simple que

Code : Tout sélectionner

SetWindowLongPtr_(WindowID(0),#GWL_STYLE,GetWindowLongPtr_(WindowID(0),#GWL_STYLE)&~ #WS_CAPTION)
   ResizeWindow(#Win,GetSystemMetrics_(#SM_CXSCREEN)>>1 - 322>>1,GetSystemMetrics_(#SM_CYSCREEN)>>1 - 275>>1,322,275)

oui, c'est clair , c'est cool :)

Re: Window_SizeGadget sans bordure

Publié : dim. 20/nov./2016 17:49
par venom
A fond 8)







@++