Taille réelle d'une fenêtre

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Taille réelle d'une fenêtre

Message par Dr. Dri »

Connaître la taille réelle d'une fenêtre, et un peu plus ^^

Code : Tout sélectionner

Procedure.l WindowRealWidth(Window.l, Width.l = #PB_Default)
  Protected WindowID.l, Style.l, rc.Rect
  
  If IsWindow(Window)
    WindowID = WindowID(Window)
    Style = GetWindowLong_(WindowID, #GWL_STYLE)
    
    If Width > #PB_Default
      rc\right = Width
    Else
      rc\right = WindowWidth(Window)
    EndIf
    
    If AdjustWindowRect_(rc, Style, GetMenu_(WindowID))
      Width = rc\right - rc\left
    EndIf
  EndIf
  
  ProcedureReturn Width
EndProcedure

Procedure.l WindowRealHeight(Window.l, Height.l = #PB_Default)
  Protected WindowID.l, Style.l, rc.Rect
  
  If IsWindow(Window)
    WindowID = WindowID(Window)
    Style = GetWindowLong_(WindowID, #GWL_STYLE)
    
    If Height > #PB_Default
      rc\bottom = Height
    Else
      rc\bottom = WindowHeight(Window)
    EndIf
    
    If AdjustWindowRect_(rc, Style, GetMenu_(WindowID))
      Height = rc\bottom - rc\top
    EndIf
  EndIf
  
  ProcedureReturn Height
EndProcedure

If OpenWindow(0, 0, 0, 320, 240, "")
  
  ;taille réelle de la fenêtre
  Debug WindowRealWidth(0)
  Debug WindowRealHeight(0)
  
  Debug "---"
  
  ;taille réelle de la fenêtre si sa taille était 600*400
  Debug WindowRealWidth(0, 600)
  Debug WindowRealHeight(0, 400)
  
EndIf
Dri ;)