SetWindowCallback()

Syntaxe

SetWindowCallback(@NomProcedure() [, #Fenetre])
Description
Mise en place d'une procédure de gestion des évènements, dite de 'Callback'.

Pour programmeurs expérimentés.
Cette fonction n'est disponible que sous Microsoft Windows.

Arguments

@NomProcedure() L'adresse de la procedure de Callback à utiliser.

La procédure de Callback doit avoir 4 paramètres et se présente sous la forme suivante:
  Procedure MaProcedureCallback(WindowID, Message, WParam, LParam)
    Resultat = #PB_ProcessPureBasicEvents
    ;
    ; Votre code ici
    ;
    ProcedureReturn Resultat
  EndProcedure
#Fenetre (optionnel) Permet d'affecter la callback seulement à une fenêtre spécifiée.

Si ce paramêtre est omis, la procedure de Callback sera appelée par toutes les fenêtres.

Valeur de retour

Aucune.

Remarques

Les évènements classiques devraient toujours être gérés avec les commandes WaitWindowEvent() ou WindowEvent().

Attention, c'est relativement bas niveau et peut interférer avec les évènements PureBasic si elle est incorrectement utilisée.

Pour annuler une Callback (fonction de rappel), il suffit d'appeler SetWindowCallback(0 [, #Fenetre]).

L'exemple qui suit montre comment tester quelques paramètres d'une fenêtre. (En utilisant les constantes de l' API Windows):
  Procedure WinCallback(hWnd, uMsg, WParam, LParam) 
    ; Windows remplit automatiquement les paramètres.
    ; Ces paramètre sont utilisable dans le code de la callback.
    
    If uMsg = #WM_SIZE 
      Select WParam 
        Case #SIZE_MINIMIZED 
          Debug "La fenêtre est minimisée" 
        Case #SIZE_RESTORED 
          Debug "La fenêtre est rétablie" 
        Case #SIZE_MAXIMIZED 
          Debug "La fenêtre est agrandie" 
      EndSelect 
    EndIf 
  
    ProcedureReturn #PB_ProcessPureBasicEvents 
  EndProcedure 
  
  
  If OpenWindow(0, 0, 0, 200, 100, "Messages", #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget) 
    
    SetWindowCallback(@WinCallback())    ; active la callback
    
    Repeat 
      Select WaitWindowEvent() 
        Case #PB_Event_CloseWindow 
          End 
      EndSelect 
    ForEver 
    
  EndIf 

OS Supportés

Windows

<- SetActiveWindow() - Window Index - SetWindowColor() ->