
Bien je voulais faire un programme de création de boitte de dialogue et j'ai travailler dessue
mais je me suis rendue compte que je fesais n'importe quoi (pour changer lol)
en, faite je me complique la vie pour rien et est décider de changer de flingue de main
alors en faite je vais pluto laisser l'utilisateur la crée lui même, ce sera bien plus simple pour lui !
voila un debut de code qui marche pas vraiment comme je veut
j'ai recup l"e code de selection avec la souris et ptetre deux troit autre truc
auriez vous une idée de comment proceder
merci d'avence pour vos explications !
Code : Tout sélectionner
Enumeration
#Window_0
#ButtonImage_3
#ButtonImage_4
#ButtonImage_5
#ButtonImage_6
#ButtonImage_7
#Fenetre_creation_boitte_de_dialogue
#Image_ButtonImage_3
#Image_ButtonImage_4
#Image_ButtonImage_5
#Image_ButtonImage_6
#Image_ButtonImage_7
EndEnumeration
;{ Included Images
DataSection
Image_ButtonImage_3:
IncludeBinary "C:\Users\dayvid\Desktop\bouton.png"
Image_ButtonImage_4:
IncludeBinary "C:\Users\dayvid\Desktop\bouton image.png"
Image_ButtonImage_5:
IncludeBinary "C:\Users\dayvid\Desktop\image.png"
Image_ButtonImage_6:
IncludeBinary "C:\Users\dayvid\Desktop\texte.png"
Image_ButtonImage_7:
IncludeBinary "C:\Users\dayvid\Desktop\editeur.png"
EndDataSection
;}
;{ Image Plugins
UsePNGImageDecoder()
;}
Define.l Event, EventWindow, EventGadget, EventType, EventMenu
;}
Global Etas_ButtonImage_3, Etas_ButtonImage_4, Etas_ButtonImage_5, Etas_ButtonImage_6, Etas_ButtonImage_7
Procedure OnMouseSelection(x,y,width,height)
Debug "-----"
Debug "Selected:"
Debug "X : "+Str(x)
Debug "Y : "+Str(y)
Debug "Width : "+Str(width)
Debug "Height: "+Str(height)
If Etas_ButtonImage_3 = 1
If UseGadgetList(WindowID(#Fenetre_creation_boitte_de_dialogue))
Numero_bouton = ButtonGadget(#PB_Any, x, y, width, height, "Bonton " + Str(Numero_bouton))
EndIf
ElseIf Etas_ButtonImage_4 = 1
If UseGadgetList(WindowID(#Fenetre_creation_boitte_de_dialogue))
Numero_bouton_image = ButtonImageGadget(#PB_Any, x, y, width, height, 0)
EndIf
ElseIf Etas_ButtonImage_5 = 1
If UseGadgetList(WindowID(#Fenetre_creation_boitte_de_dialogue))
Numero_image = ImageGadget(#PB_Any, x, y, width, height, 0)
EndIf
ElseIf Etas_ButtonImage_6 = 1
If UseGadgetList(WindowID(#Fenetre_creation_boitte_de_dialogue))
Numero_texte = TextGadget(#PB_Any, x, y, width, height, "texte")
EndIf
ElseIf Etas_ButtonImage_7 = 1
If UseGadgetList(WindowID(#Fenetre_creation_boitte_de_dialogue))
Numero_editeur_texte = EditorGadget(#PB_Any, x, y, width, height, 0)
EndIf
EndIf
EndProcedure
Procedure DrawMouseSelector(hWnd)
Shared WindowProc_MouseSelectStartX, WindowProc_MouseSelectLastX
Shared WindowProc_MouseSelectStartY, WindowProc_MouseSelectLastY
Shared WindowProc_MouseSelectRect.RECT
If WindowProc_MouseSelectStartX > WindowProc_MouseSelectLastX
WindowProc_MouseSelectRect\left = WindowProc_MouseSelectLastX
WindowProc_MouseSelectRect\right = WindowProc_MouseSelectStartX
Else
WindowProc_MouseSelectRect\left = WindowProc_MouseSelectStartX
WindowProc_MouseSelectRect\right = WindowProc_MouseSelectLastX
EndIf
If WindowProc_MouseSelectStartY > WindowProc_MouseSelectLastY
WindowProc_MouseSelectRect\top = WindowProc_MouseSelectLastY
WindowProc_MouseSelectRect\bottom = WindowProc_MouseSelectStartY
Else
WindowProc_MouseSelectRect\top = WindowProc_MouseSelectStartY
WindowProc_MouseSelectRect\bottom = WindowProc_MouseSelectLastY
EndIf
hDC = GetDC_(hWnd)
DrawFocusRect_(hDC,@WindowProc_MouseSelectRect)
ReleaseDC_(hWnd,hDC)
;UpdateWindow_(hWnd) ; Win9x fix?
EndProcedure
Procedure WindowProc(hWnd,Msg,wParam,lParam)
Shared WindowProc_MouseSelect
Shared WindowProc_MouseSelectStartX, WindowProc_MouseSelectLastX
Shared WindowProc_MouseSelectStartY, WindowProc_MouseSelectLastY
Shared WindowProc_MouseSelectRect.RECT
Select Msg
Case #WM_LBUTTONDOWN
WindowProc_MouseSelect = 1
WindowProc_MouseSelectStartX = lParam&$FFFF
WindowProc_MouseSelectStartY = (lParam>>16)&$FFFF
GetClientRect_(hWnd,winrect.RECT)
MapWindowPoints_(hWnd,0,winrect,2)
ClipCursor_(winrect)
Case #WM_LBUTTONUP
If WindowProc_MouseSelect > 1
DrawMouseSelector(hWnd)
If WindowProc_MouseSelectRect\left <> WindowProc_MouseSelectRect\right And WindowProc_MouseSelectRect\top <> WindowProc_MouseSelectRect\bottom
OnMouseSelection(WindowProc_MouseSelectRect\left,WindowProc_MouseSelectRect\top,WindowProc_MouseSelectRect\right-WindowProc_MouseSelectRect\left,WindowProc_MouseSelectRect\bottom-WindowProc_MouseSelectRect\top)
SetCapture_(0)
EndIf
EndIf
ClipCursor_(0)
WindowProc_MouseSelect = 0
Case #WM_MOUSEMOVE
If WindowProc_MouseSelect > 0 And wParam & #MK_LBUTTON
If WindowProc_MouseSelect > 1
DrawMouseSelector(hWnd)
Else
WindowProc_MouseSelect + 1
EndIf
WindowProc_MouseSelectLastX = lParam&$FFFF
WindowProc_MouseSelectLastY = (lParam>>16)&$FFFF
DrawMouseSelector(hWnd)
SetCapture_(hWnd)
EndIf
EndSelect
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
Procedure Fenetre_creation_boitte_de_dialogue(a)
OpenWindow(#Fenetre_creation_boitte_de_dialogue,0,0,400,400,"Boitte de dialogue",#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_Invisible)
SetWindowCallback(@WindowProc())
HideWindow(#Fenetre_creation_boitte_de_dialogue, 0)
; SetActiveGadget(#Fenetre_creation_boitte_de_dialogue)
; SetActiveGadget(#Window_0)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
EndProcedure
Procedure Fenetre_outils_pour_la_boitte_de_dialogue(b)
If OpenWindow(#Window_0, 480, 456, 198, 36, " Outils pour la boitte de dialogue", #PB_Window_SystemMenu|#PB_Window_TitleBar|#PB_Window_Tool)
ButtonImageGadget(#ButtonImage_3, 5, 5, 37, 26, CatchImage(#Image_ButtonImage_3, ?Image_ButtonImage_3), #PB_Button_Toggle)
ButtonImageGadget(#ButtonImage_4, 43, 5, 37, 26, CatchImage(#Image_ButtonImage_4, ?Image_ButtonImage_4), #PB_Button_Toggle)
ButtonImageGadget(#ButtonImage_5, 80, 5, 37, 26, CatchImage(#Image_ButtonImage_5, ?Image_ButtonImage_5), #PB_Button_Toggle)
ButtonImageGadget(#ButtonImage_6, 117, 5, 37, 26, CatchImage(#Image_ButtonImage_6, ?Image_ButtonImage_6), #PB_Button_Toggle)
ButtonImageGadget(#ButtonImage_7, 155, 5, 37, 26, CatchImage(#Image_ButtonImage_7, ?Image_ButtonImage_7), #PB_Button_Toggle)
EndIf
;{- Event loop
Repeat
Event = WaitWindowEvent()
Select Event
; ///////////////////
Case #PB_Event_Gadget
EventGadget = EventGadget()
EventType = EventType()
If EventGadget = #ButtonImage_3
Etas_ButtonImage_3 = GetGadgetState(#ButtonImage_3)
If Etas_ButtonImage_3 = 1
SetGadgetState(#ButtonImage_4, 0)
SetGadgetState(#ButtonImage_5, 0)
SetGadgetState(#ButtonImage_6, 0)
SetGadgetState(#ButtonImage_7, 0)
Else
SetGadgetState(#ButtonImage_3, 1)
EndIf
ElseIf EventGadget = #ButtonImage_4
Etas_ButtonImage_4 = GetGadgetState(#ButtonImage_4)
If Etas_ButtonImage_4 = 1
SetGadgetState(#ButtonImage_3, 0)
SetGadgetState(#ButtonImage_5, 0)
SetGadgetState(#ButtonImage_6, 0)
SetGadgetState(#ButtonImage_7, 0)
Etas_ButtonImage_3 = 0
Etas_ButtonImage_5 = 0
Etas_ButtonImage_6 = 0
Etas_ButtonImage_7 = 0
Else
SetGadgetState(#ButtonImage_4, 1)
EndIf
ElseIf EventGadget = #ButtonImage_5
Etas_ButtonImage_5 = GetGadgetState(#ButtonImage_5)
If Etas_ButtonImage_5 = 1
SetGadgetState(#ButtonImage_4, 0)
SetGadgetState(#ButtonImage_3, 0)
SetGadgetState(#ButtonImage_6, 0)
SetGadgetState(#ButtonImage_7, 0)
Etas_ButtonImage_4 = 0
Etas_ButtonImage_3 = 0
Etas_ButtonImage_6 = 0
Etas_ButtonImage_7 = 0
Else
SetGadgetState(#ButtonImage_5, 1)
EndIf
ElseIf EventGadget = #ButtonImage_6
Etas_ButtonImage_6 = GetGadgetState(#ButtonImage_6)
If Etas_ButtonImage_6 = 1
SetGadgetState(#ButtonImage_4, 0)
SetGadgetState(#ButtonImage_5, 0)
SetGadgetState(#ButtonImage_3, 0)
SetGadgetState(#ButtonImage_7, 0)
Etas_ButtonImage_4 = 0
Etas_ButtonImage_5 = 0
Etas_ButtonImage_3 = 0
Etas_ButtonImage_7 = 0
Else
SetGadgetState(#ButtonImage_6, 1)
EndIf
ElseIf EventGadget = #ButtonImage_7
Etas_ButtonImage_7 = GetGadgetState(#ButtonImage_7)
If Etas_ButtonImage_7 = 1
SetGadgetState(#ButtonImage_4, 0)
SetGadgetState(#ButtonImage_5, 0)
SetGadgetState(#ButtonImage_6, 0)
SetGadgetState(#ButtonImage_3, 0)
Etas_ButtonImage_4 = 0
Etas_ButtonImage_5 = 0
Etas_ButtonImage_6 = 0
Etas_ButtonImage_3 = 0
Else
SetGadgetState(#ButtonImage_7, 1)
EndIf
EndIf
; ////////////////////////
Case #PB_Event_CloseWindow
EventWindow = EventWindow()
If EventWindow = #Window_0
CloseWindow(#Window_0)
Break
EndIf
EndSelect
ForEver
;
;}
EndProcedure
Thread_Fenetre_outils_pour_la_boitte_de_dialogue = CreateThread(@Fenetre_outils_pour_la_boitte_de_dialogue(), 0)
Thread_Fenetre_creation_boitte_de_dialogue = CreateThread(@Fenetre_creation_boitte_de_dialogue(), 0)
WaitThread(Thread_Fenetre_outils_pour_la_boitte_de_dialogue)