SetWindowCallback()

Syntaxe

SetWindowCallback(@NomDeLaProcedure() [, #Fenetre])
Description
Pour programmeurs expérimentés. Cette fonction est seulement disponible sous Microsoft Windows. Les évènements classiques devraient toujours être gérés avec les commandes WaitWindowEvent() ou WindowEvent(). Cette commande permet d'accéder directement à la callback utilisée par Windows pour gérer les évènements reçus par l'application. Cela permet d'avoir un contrôle total sur ces derniers. Attention, c'est relativement bas niveau pour du BASIC et peut interférer avec les évènements PureBasic si elle est incorrectement utilisée.

Le paramètre optionnel permet d'affecter la commande SetWindowCallback() seulement à la '#Fenetre' spécifiée.

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

La procédure qui servira de callback doit avoir 4 paramètres et se présente sous la forme suivante:
  Procedure MaProcedureCallback(WindowID, Message, wParam, lParam)
    Resultat = #PB_ProcessPureBasicEvents
    ;
    ; entrez votre code ici
    ;
    ProcedureReturn Resultat
  EndProcedure
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) 
    ; Nous pouvons tester dans la callback les paramètres renseignés automatiquement par windows
    
    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() ->