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