Je veux créer une fenêtre avec simplement un menu, une statusbar, une toolbar et un SplitterGadget en utilisant seulement les fonctions natives PB (pas d'API windows car je code sous Windows XP ET Linux Mandrake 10.0). Il se trouve qu'en utilisant le code suivant, je me retrouve avec mon SplitterGadget qui recouvre la barre de menu et la statusbar, et je n'ai pas trouvé une fonction me permettant d'obtenir la hauteur de ces dernier pour redimensionner mon SplitterGadget en fonction.
J'ai cherché sur le forum et apparament tout le monde utilise l'API windows pour obtenir ces valeur.
Quelqu'un peut-il me dire si elles existent, et si oui quelle sont-elles?
Pour info, voici mon code (rien de bien difficile pour l'instant, j'en suis juste au début...):
Code : Tout sélectionner
Global AppVersion.s,AppName.s
Global AppODBCsource.s,AppODBCuser.s,AppODBCpassword.s
Global MainWindowX.l,MainWindowY.l,MainWindowHeight.l,MainWindowWidth.l
AppVersion = "0.0.1"
AppName = "CG"
Enumeration
#CG ;Base de donnée
#MainWindow ;Fenêtre principale
#MainToolbar
#MainToolbar_Nouveau
#MainMenu
#MainMenu_Nouveau
#MainMenu_Quitter
#MainStatusBar
#SplitterGadget1
#ListIconGadgetHaut
#ListIconGadgetBas
EndEnumeration
Procedure GetParameters()
OpenPreferences("conf.ini")
;Paramètre généraux du programme
AppODBCsource = ReadPreferenceString("AppODBCsource", "CG")
AppODBCuser = ReadPreferenceString("AppODBCuser", "admin")
AppODBCpassword = ReadPreferenceString("AppODBCpassword", "")
;Paramètres de la fenêtre
MainWindowY = ReadPreferenceLong("MainWindowY", 0)
MainWindowX = ReadPreferenceLong("MainWindowX", 0)
MainWindowHeight = ReadPreferenceLong("MainWindowHeight", 300)
MainWindowWidth = ReadPreferenceLong("MainWindowWidth", 450)
EndProcedure
Procedure SaveParameters()
CreatePreferences("conf.ini")
;Paramètre généraux du programme
WritePreferenceString("AppODBCsource", AppODBCsource)
WritePreferenceString("AppODBCuser", AppODBCuser)
WritePreferenceString("AppODBCpassword", AppODBCpassword)
;Paramètres de la fenêtre
WritePreferenceLong("MainWindowX", MainWindowX)
WritePreferenceLong("MainWindowY", MainWindowY)
WritePreferenceLong("MainWindowHeight", MainWindowHeight)
WritePreferenceLong("MainWindowWidth", MainWindowWidth)
EndProcedure
;-Début du programme
GetParameters()
OpenDatabase(#CG,AppODBCsource,AppODBCuser,AppODBCpassword)
;-#MainWindow
OpenWindow(#MainWindow,MainWindowX,MainWindowY,MainWindowWidth,MainWindowHeight,#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_SizeGadget|#PB_Window_TitleBar|#PB_Window_ScreenCentered,AppName + " " + AppVersion)
;-#MainWindow Toolbar
CreateToolBar(#MainToolbar,WindowID(#MainWindow))
ToolBarStandardButton(#MainToolbar_Nouveau, #PB_ToolBarIcon_New)
;-#MainWindow Menu
CreateMenu(#MainMenu,WindowID(#MainWindow))
MenuTitle("Fichier")
MenuItem(#MainMenu_Nouveau, "Nouveau")
MenuBar()
MenuItem(#MainMenu_Quitter,"Quitter")
;-#MainWindow StatusBar
CreateStatusBar(#MainStatusBar,WindowID(#MainWindow))
;-#MainWindow GadgetList
CreateGadgetList(WindowID(#MainWindow))
ListIconGadget(#ListIconGadgetHaut,0,0,0,0,"Haut",50)
ListIconGadget(#ListIconGadgetBas,0,0,0,0,"Bas",50)
;Il me faut la hauteur de la Toolbar et du statusbar pour positionner/dimensionner correctement mon Splitter
SplitterGadget(#SplitterGadget1,0,0,WindowWidth(),WindowHeight(),#ListIconGadgetHaut,#ListIconGadgetBas)
Repeat
AppEvent = WaitWindowEvent()
If AppEvent = #PB_Event_CloseWindow
Quit = 1
ElseIf AppEvent = #PB_Event_Menu
If EventMenuID() = #MainMenu_Quitter
Quit = 1
EndIf
ElseIf AppEvent = #PB_Event_SizeWindow
ExamineDesktops()
If WindowWidth() <> DesktopWidth(0) And WindowHeight() <> DesktopHeight(0)
MainWindowX = WindowX()
MainWindowY = WindowY()
MainWindowHeight = WindowHeight()
MainWindowWidth = WindowWidth()
SaveParameters()
EndIf
EndIf
Until Quit = 1