SetWindowCallback()

Syntaxe

SetWindowCallback(@NomProcedure() [, #Fenetre [, Mode]])
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 si l'événement n'est pas traité, le résultat doit être défini sur #PB_ProcessPureBasicEvents afin que l'événement soit correctement géré par PureBasic.
Voici un exemple de code :
  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.
Mode (optionnel) Le mode de rappel peut prendre l'une des valeurs suivantes :
  #PB_Window_ProcessChildEvents: Les événements des gadgets enfants (principalement #WM_NOTIFY) seront envoyés à la fenêtre principale. Ne fonctionne pas pour tous les gadgets (par défaut).
  #PB_Window_NoChildEvents     : Les événements des gadgets enfants ne seront pas envoyés à la fenêtre principale (comportement par défaut de WinAPI).

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.

Cette fonction associe un rappel (callback) pour gérer les événements de toutes les fenêtres ouvertes.
Tous les événements sont capturés par ce rappel et peuvent être traités ici. Pour définir un rappel pour une fenêtre spécifique uniquement, il suffit d'ajouter l'identifiant de la fenêtre concernée dans le paramètre facultatif [#Fenetre].

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):

Exemple

  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(), 0)    ; active la callback
    
    Repeat 
      Select WaitWindowEvent()
        Case #PB_Event_CloseWindow
          End
      EndSelect
    ForEver

  EndIf

OS Supportés

Windows

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