Nouveau petit code, pour déterminer quels sont les boutons qui sont présents sur la barre d'outils, et leur état : Et toujours pas la position
Il a l'air un peu long, à première vue, mais il y a beaucoup de commentaires.
Code : Tout sélectionner
;/Constantes Window
Enumeration
#Window_0
EndEnumeration
;/Constantes Gadget
Enumeration
#Btn_Quit
EndEnumeration
;- Selon le type de construction, on trouvera un résultat différent:
;/ Type 1 : #PB_Window_TitleBar tout seul: pas de boutons
;/ Type 2 : #PB_Window_SystemMenu tout seul : La barre à au moins un bouton : "Fermer"
;/ Type 3 : #PB_Window_TitleBar ou #PB_Window_SystemMenu, + 1 bouton
;/ Les trois boutons son présents sur la barre, le bouton qui n'est pas nommé
;/ est désactivé
;- Sous PureBasic, quand une fenêtre est construite avec l'attribut #PB_Window_TitleBar,
;- et qu'on lui ajoute un bouton, par exemple #PB_Window_MinimizeGadget, elle prend
;- automatiquement l'attribut #PB_Window_SystemMenu.
;- On peut utiliser cette propriété pour savoir quels sont les boutons présents
;- sur la barre de titre, en utilisant les constantes de windows selon les
;- equivalences ci dessous.
;-
;- Equivalences Microsoft - PureBasic (Rien à voir avec la valeur des constantes)
;/ #PB_Window_SystemMenu = #WS_SYSMENU : La barre contient au moins le bouton "Fermer"
;/ #PB_Window_TitleBar = #WS_CAPTION : La barre ne contient aucun bouton
;- Décommenter une des quatres lignes qui suivent, et commenter les trois autres
;If OpenWindow(#Window_0, 300, 300, 300, 200, #PB_Window_TitleBar|#PB_Window_ScreenCentered, "Fenêtre 1",0)
If OpenWindow(#Window_0, 300, 300, 300, 200, #PB_Window_SystemMenu|#PB_Window_ScreenCentered, "Fenêtre 1",0)
;If OpenWindow(#Window_0, 300, 500, 300, 200, #PB_Window_TitleBar|#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered, "Fenêtre 1",0)
;If OpenWindow(#Window_0, 300, 500, 300, 200, #PB_Window_TitleBar|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_ScreenCentered, "Fenêtre 1",0)
hWnd = WindowID(#Window_0)
;- On recupère d'abord le style de la fenêtre
Style = GetWindowLong_(hWnd, #GWL_STYLE)
;- Si la barre de titre possède l'attribut #WS_SYSMENU, (soit #PB_Window_SystemMenu)
;- elle a obligatoirement au moins un bouton: le bouton "Quitter"
;- Reste à déterminer si elle a les autre boutons, et si ils sont activés
StartDrawing(WindowOutput())
DrawingMode(1)
If Style & #WS_SYSMENU And Style & #WS_MINIMIZEBOX = 0 And Style & #WS_MAXIMIZEBOX = 0
Locate(10,20):DrawText("Barre de titre type "+Chr(34)+"SystemMenu"+Chr(34))
Locate(10,40) : DrawText("Pas de bouton auxiliaire")
ElseIf Style & #WS_SYSMENU
Locate(10,20):DrawText("Barre de titre type "+Chr(34)+"SystemMenu"+Chr(34))
If Style & #WS_MINIMIZEBOX
Locate(10,40):DrawText("Bouton "+Chr(34)+"Minimize"+Chr(34)+" : Activé")
Else
Locate(10,40):DrawText("Bouton "+Chr(34)+"Minimize"+Chr(34)+" : Désactivé")
EndIf
If Style & #WS_MAXIMIZEBOX
Locate(10,60):DrawText("Bouton "+Chr(34)+"Maximise"+Chr(34)+" : Activé")
Else
Locate(10,60):DrawText("Bouton "+Chr(34)+"Maximise"+Chr(34)+" : Désactivé")
EndIf
ElseIf Style & #WS_SYSMENU =0
Locate(10,20):DrawText("Barre de titre type "+Chr(34)+"TitleBar"+Chr(34))
EndIf
StopDrawing()
UpdateWindow_(hWnd)
If CreateGadgetList(WindowID(#Window_0))
ButtonGadget(#Btn_Quit, 100, 170, 100, 25, "Quitter")
EndIf
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
Voilà
Chris
