mettre plusieurs CallBack dans un programme
Publié : sam. 24/avr./2004 19:09
Salut,
j'ai fait une petite lib pour pouvoir mettre plusiseurs callback dans un prog.
le code de la lib est le suivant :
et voici un exemple :
tout ceci est dispo sur mon site
j'en profite pour signaler que j'ai corrigé mes lib ToolTip et ButtonImageGadgetEx qui utilisent dorénavent ce principe vu qu'elle ont besion d'un callback et que cela empêchait d'en mettre un dans le code
j'ai fait une petite lib pour pouvoir mettre plusiseurs callback dans un prog.
le code de la lib est le suivant :
Code : Tout sélectionner
Declare AllCallBack(hWnd, uMsg, wParam, lParam)
ProcedureDLL UseCallBack_Init()
NewList CallBackList.l()
SetWindowCallback(@AllCallBack())
EndProcedure
ProcedureDLL AddCallBack(Nom_Procedure.l) ; Ajouter un CallBack
AddElement(CallBackList())
CallBackList() = Nom_Procedure
EndProcedure
Procedure.l AllCallBack(hWnd, uMsg, wParam, lParam)
ReturnValue = #PB_ProcessPureBasicEvents
ResetList(CallBackList())
While NextElement(CallBackList())
Retour = CallWindowProc_(CallBackList(), hWnd, uMsg, wParam, lParam)
If Retour <> #PB_ProcessPureBasicEvents
ReturnValue = Retour
EndIf
Wend
ProcedureReturn ReturnValue
EndProcedure
Code : Tout sélectionner
Procedure.l WinCallback(WindowID, Message, wParam, lParam)
ReturnValue = #PB_ProcessPureBasicEvents
If Message = #WM_SIZE
Select wParam
Case #SIZE_RESTORED
MessageRequester(" info", "maximimizé", 0)
EndSelect
EndIf
ProcedureReturn ReturnValue
EndProcedure
Procedure.l WinCallback2(WindowID, Message, wParam, lParam)
ReturnValue = #PB_ProcessPureBasicEvents
If Message = #WM_SIZE
Select wParam
Case #SIZE_MINIMIZED
MessageRequester( "info", "minimizé", 0)
EndSelect
EndIf
ProcedureReturn ReturnValue
EndProcedure
If OpenWindow(0, 0, 0, 300, 300, #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget | #PB_Window_SizeGadget, "Test") = 0 Or CreateGadgetList(WindowID()) = 0
End
EndIf
AddCallBack(@WinCallback())
AddCallBack(@WinCallback2())
Repeat
Event = WaitWindowEvent()
Until Event = #PB_EventCloseWindow
j'en profite pour signaler que j'ai corrigé mes lib ToolTip et ButtonImageGadgetEx qui utilisent dorénavent ce principe vu qu'elle ont besion d'un callback et que cela empêchait d'en mettre un dans le code