mettre plusieurs CallBack dans un programme

Vous avez développé un logiciel en PureBasic et vous souhaitez le faire connaitre ?
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

mettre plusieurs CallBack dans un programme

Message par Le Soldat Inconnu »

Salut,

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
et voici un exemple :

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
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
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Très intéressant pour faire des libs :)

il manque UseCallBack_Init() dans ton exemple!
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

pas besoin de le lancer ;)
il se lance tout seul quand on veut utiliser la lib, c'est beau la technologie :D vive TailBite
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Répondre