J'ai créé une petite libraire pour créer des fenètres de type outil, barre de titre réduite. Le fonctionnement est presque identique à la création d'une fenètre normale.
Le but est de créer une petite fenètre sur laquelle je vais placer des boutons pour faire une barre d'outil détachable. Sur la fenètre principale je place un bouton qui va ouvrir la Barre d'outil associé à ce bouton. C'est une idée qui me vient du logiciel Rhinoceros 3D. Exemple :
Une fenètre regroupe les commandes de création de forme primitive 3D.
Une autre fenètre les commandes de création de surface.
Etc.
Je vais faire un exemple de ça demain. Avec la librairie ToolBarXP du Soldat Inconnu.
Le code est près à être transformé en librairie avec TailBite.
Code : Tout sélectionner
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; OpenToolWindow
; Version 1.0
; Programmation = OK
; Programmé par : Guimauve
; Date : 4 septembre 2004
; Codé avec PureBasic V3.91
; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Options doit avoir #PB_Window_Invisible comme valeur minimum.
ProcedureDLL OpenToolWindow(Fenetre, x, y, LargeurInterne, HauteurInterne, Options, Titre$) ; Ouvre une fenetre outils.
WindowID = OpenWindow(Fenetre, x, y, LargeurInterne, HauteurInterne, Options, Titre$)
SetWindowLong_(WindowID, #GWL_EXSTYLE, #WS_EX_TOOLWINDOW) ; both lines are needed to avoid displaying
ShowWindow_(WindowID, #SW_SHOW) ; of your window on the taskbar
ProcedureReturn WindowID
EndProcedure
ProcedureDLL OpenToolWindow2(Fenetre, x, y, LargeurInterne, HauteurInterne, Options, Titre$ , FenetreMereID)
WindowID = OpenWindow(Fenetre, x, y, LargeurInterne, HauteurInterne, Options, Titre$ ,FenetreMereID)
SetWindowLong_(WindowID, #GWL_EXSTYLE, #WS_EX_TOOLWINDOW) ; both lines are needed to avoid displaying
ShowWindow_(WindowID, #SW_SHOW) ; of your window on the taskbar
ProcedureReturn WindowID
EndProcedure
Code pout tester :
Code : Tout sélectionner
Enumeration
#MainWin
#Btn_Quitter
EndEnumeration
Procedure TestWindow()
If OpenWindow(#MainWin, 0, 0, 400, 300, #PB_Window_ScreenCentered | #PB_Window_SystemMenu, "Test window") <> 0
If CreateGadgetList(WindowID(#MainWin))
ButtonGadget(#Btn_Quitter, WindowWidth() -85, WindowHeight()-35, 75, 25, "Quitter")
EndIf
EndIf
Repeat
EventID = WaitWindowEvent()
Select EventGadgetID()
Case #Btn_Quitter
EventID = #PB_Event_CloseWindow
EndSelect
Until EventID = #PB_Event_CloseWindow
EndProcedure
Enumeration 100
#ToolWin
#Btn_ToolWin_Quitter
EndEnumeration
Procedure TestToolWindow()
If OpenToolWindow(#ToolWin, 0, 0, 400, 300, #PB_Window_ScreenCentered | #PB_Window_Invisible | #PB_Window_SystemMenu, "Test tool window") <> 0
If CreateGadgetList(WindowID(#ToolWin))
ButtonGadget(#Btn_ToolWin_Quitter, WindowWidth() -85, WindowHeight()-35, 75, 25, "Quitter")
EndIf
EndIf
Repeat
EventID2 = WaitWindowEvent()
Select EventGadgetID()
Case #Btn_ToolWin_Quitter
EventID2 = #PB_Event_CloseWindow
EndSelect
Until EventID2 = #PB_Event_CloseWindow
EndProcedure
TestWindow()
TestToolWindow()
Guimauve