SetWindowCallback()

Syntax

SetWindowCallback(@ProcedureName() [, #Window [, Modus]])
Beschreibung
Nur für erfahrene Programmierer. Diese Funktion wird nur auf Microsoft Windows unterstützt.

Normale Ereignisse (Events) sollten mit den regulären Befehlen WaitWindowEvent() oder WindowEvent() verarbeitet werden.

Dieser Befehl assoziiert einen Callback ("Rückruf"), um die Ereignisse aller offenen Fenster zu verarbeiten. Alle Ereignisse werden durch diesen Callback abgefangen und können hier verarbeitet werden. Um einen Callback nur für ein bestimmtes Fenster festzulegen, kann mit dem optionalen Parameter die PB Fensternummer '#Window' übergeben werden.

Zum Entfernen/Deaktivieren eines gesetzten Callbacks rufen Sie einfach SetWindowCallback(0 [, #Window]) auf.

Warnung: Dieser Weg ist "low-level". Falsche Handhabung der Nachrichten ("Messages") im Callback kann die PB-interne Nachrichten-Verarbeitung stören.

Parameter

@ProcedureName() Die zu verwendende Callback-Prozedur. Wenn ein vorheriger Callback festgelegt war, wird dieser ersetzt. Der Callback muss 4 Parameter haben. Wenn das Ereignis nicht verarbeitet wird, muss das Ergebnis auf #PB_ProcessPureBasicEvents gesetzt werden, damit das Ereignis ordnungsgemäß von PureBasic verarbeitet wird. Hier ist ein Beispielcode zur korrekten Verwendung eines Callbacks:
  Procedure MyWindowCallback(WindowID, Message, WParam, LParam)
    Result = #PB_ProcessPureBasicEvents
    ;
    ; Ihr Programmcode hier
    ;
    ProcedureReturn Result
  EndProcedure
#Window (optional) Ein bestimmtes Fenster, dem der Callback zugewiesen werden soll. Sofern dieser Parameter weggelassen wird, wird der Callback für jedes Fenster aufgerufen.
Modus (optional) Der Callback-Modus, kann einer der folgenden Werte sein:
  #PB_Window_ProcessChildEvents: die Ereignisse von untergeordneten Gadgets ('child gadget events', mostly #WM_NOTIFY)
                                 werden an das Hauptfenster gesendet. Funktioniert nicht für alle Gadgets (Standard).
  #PB_Window_NoChildEvents     : Ereignisse von untergeordneten Gadgets ('child gadget events' werden nicht an das
                                 Hauptfenster gesendet (WinAPI Standard-Verhalten).

Rückgabewert

Diese Funktion gibt keinen Wert zurück.

Beispiel

Hier sehen Sie ein lauffähiges Beispiel, welches einige Fenster-Parameter überprüft (unter Verwendung von Windows API Konstanten):
  Procedure WinCallback(hWnd, uMsg, wParam, lParam) 
    ; Windows füllt die Parameter automatisch, welche wir im Callback verwenden...
    
    If uMsg = #WM_SIZE 
      Select wParam 
        Case #SIZE_MINIMIZED 
          Debug "Fenster wurde minimiert"
        Case #SIZE_RESTORED 
          Debug "Fenster wurde wiederhergestellt"
        Case #SIZE_MAXIMIZED 
          Debug "Fenster wurde maximiert"
      EndSelect 
    EndIf 
  
    ProcedureReturn #PB_ProcessPureBasicEvents 
  EndProcedure 
  
  
  If OpenWindow(0, 0, 0, 200, 100, "Messages", #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget) 

    SetWindowCallback(@WinCallback(), 0) ; Callback zuweisen
    
    Repeat 
      Select WaitWindowEvent() 
        Case #PB_Event_CloseWindow 
          End 
      EndSelect 
    ForEver 
    
  EndIf 

Unterstützte OS

Windows

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