Et en plus, je me suis planté dans le code.
GetClientRect_() retire la hauteur du menu dans la valeur retournée.
Voila le vrai exemple. L'autre, tu le jettes. (Pas dans la nature, c'est pas bio-dégradable

)
Code : Tout sélectionner
;/Constantes Window
Enumeration
#Window_0
EndEnumeration
;/Constantes Gadget
Enumeration
#Btn_Quit
#StatusBar
#Menu
EndEnumeration
If OpenWindow(#Window_0, 300, 300, 300, 200, #PB_Window_SystemMenu, "Fenêtre 1",0)
hWnd = WindowID(#Window_0)
If CreateGadgetList(WindowID(#Window_0))
ButtonGadget(#Btn_Quit, 100, 130, 100, 25, "Quitter")
hMenu = CreateMenu(#Menu,hWnd)
MenuTitle("Project")
hStBar = CreateStatusBar(#StatusBar, hWnd)
EndIf
;- Dimensions déclarées dans PureBasic
Debug "Dimensions de la fenêtre fournies à PB"
Debug "Hauteur = 200"
Debug "Largeur = 300"
Debug ""
;- Encombrement réel de la fenêtre
Debug "Encombrement réel de la fenêtre"
GetWindowRect_(hWnd, Win.RECT)
HautWin.w = Win\bottom - Win\top : Debug "Hauteur = "+Str(HautWin)
LargWin.w = Win\right - Win\left : Debug "Largeur = "+Str(LargWin)
Debug""
;-Zone "Utile" de la fenetre retournée par GetClientRect_()
Debug "Zone calculée par GetClientRect_()"
Debug "La fonction retire la hauteur du menu"
GetClientRect_(hWnd,@lpRect.RECT)
Haut.w = lpRect\bottom - lpRect\top
Larg.w = lpRect\right - lpRect\left
Debug "Hauteur = "+Str(Haut)
Debug "Largeur = "+Str(Larg)
Debug ""
;- Hauteur du menu
HautMenu = MenuHeight()
Debug "Hauteur du menu = "+Str(HautMenu)+" (Déjà retiré)"
;
;- Hauteur de la barre d'état
SendMessage_(hStBar,#SB_GETRECT,0,@Rect.RECT)
Haut_Bar = Rect\bottom - Rect\top
Debug "Hauteur de la barre d'état = "+Str(Haut_Bar)
Debug ""
;- Dimensions exploitables de la fenêtre, hors menu et barre d'état
HauteurFenetre = Haut - Haut_Bar
LargeurFenetre = Larg
Debug "Dimensions exploitables, (sans le menu et la StatusBar)"
Debug "Hauteur = "+Str(HauteurFenetre)
Debug "Largeur = "+Str(LargeurFenetre)
;
Repeat
Select WaitWindowEvent()
Case #PB_EventGadget
Select EventGadgetID()
Case #Btn_Quit : quit = 1
EndSelect
Case #PB_EventCloseWindow : quit = 1
EndSelect
Until quit = 1
End
EndIf
Chris
