OnNotify

Registriert eine Funktion oder Methode, die aufgerufen wird, wenn eine Steuerelement­benachrichtigung via WM_NOTIFY-Meldung empfangen wird.

GuiCtrl.OnNotify(NachrichtCode, Rückruf , HinzufügenEntfernen)

Parameter

NachrichtCode

Typ: Integer

Ein steuerelementdefinierter Benachrichtigungscode, der überwacht werden soll.

Rückruf

Typ: Zeichenkette oder Funktionsobjekt

Eine Funktion, eine Methode oder ein Objekt, die/das aufgerufen wird, wenn das Ereignis ausgelöst wird.

Wenn die GUI ein Event-Sink hat (d.h. wenn der EreignisObj-Parameter von Gui() angegeben wurde), kann dieser Parameter der Name einer Methode im Event-Sink sein. Andernfalls muss dieser Parameter ein Funktionsobjekt sein.

Die Rückruffunktion akzeptiert zwei Parameter und kann wie folgt definiert werden:

MeinRückruf(GuiCtrl, lParam) { ...

Es spielt keine Rolle, welche Namen Sie den Parametern geben, allerdings werden ihnen die folgenden Werte nacheinander zugewiesen:

  1. Das GuiControl-Objekt des aktuellen GUI-Steuerelements.
  2. Die Adresse einer Benachrichtigungsstruktur, die von NMHDR abgeleitet ist. Die Art der Struktur hängt vom Typ des Steuerelements und des Benachrichtigungscodes ab. Wenn die Struktur zusätzliche Informationen über die Benachrichtigung enthält, kann die Rückruffunktion diese mit NumGet und/oder StrGet abrufen.

Es können beliebig viele Parameter am Ende der Parameterliste der Rückruffunktion weggelassen werden, wenn die entsprechenden Informationen nicht benötigt werden, aber dann muss als letzter Parameter ein Sternchen angegeben werden, z.B. MeinRückruf(Param1, *).

Die OnEvent-Hinweise bezüglich this und Bound-Funktionen gelten auch für OnNotify.

Wenn mehrere Rückruffunktionen für ein Ereignis registriert sind, kann eine Rückruffunktion einen nicht-leeren Wert zurückgeben, um zu verhindern, dass die restlichen Rückruffunktionen aufgerufen werden.

Der Rückgabewert der Rückruffunktion kann je nach Benachrichtigung eine zusätzliche Bedeutung haben. Zum Beispiel verhindert die ListView-Benachrichtigung LVN_BEGINLABELEDIT (-175 oder -105), dass der Benutzer die Beschriftung editieren kann, wenn die Rückruffunktion TRUE (1) zurückgibt.

HinzufügenEntfernen

Typ: Integer

Wenn weggelassen, wird standardmäßig 1 verwendet. Andernfalls geben Sie eine der folgenden Zahlen an:

WM_NOTIFY

Bestimmte Steuerelemente senden eine WM_NOTIFY-Meldung, wann immer ein interessantes Ereignis eintritt oder das Steuerelement Informationen vom Programm benötigt. Der lParam-Parameter dieser Meldung enthält einen Pointer, der auf eine Struktur mit Informationen über die Benachrichtigung verweist. Die Art der Struktur ist abhängig vom Benachrichtigungscode und vom Typ des Steuerelements, das die Benachrichtigung ausgelöst hat, basiert aber immer auf NMHDR.

Welche Benachrichtigungen es genau gibt (falls vorhanden), welche Art von Struktur sie bereitstellen und wie sie den Rückgabewert interpretieren, entnehmen Sie bitte der Dokumentation des Steuerelements. Control Library (Microsoft Docs) enthält Links zu jedem der gängigen Windows-Steuerelemente. Die Benachrichtigungscodes (Nummern) können im Windows SDK oder durch Suchen im Internet gefunden werden.

AutoHotkey verwendet die Felder IdFrom und HwndFrom, um das Steuerelement zu identifizieren, das die Benachrichtigung gesendet hat, und sendet diese dann an das entsprechende Objekt. Das code-Feld enthält den Benachrichtigungscode. Da diese mit GuiCtrl und NachrichtCode übereinstimmen müssen, die zur Registrierung der Rückruffunktion verwendet werden, sind sie für das Skript nur von geringem Nutzen.

Folgende OnEvent-Hinweise gelten auch für OnNotify: Threads, GUI zerstören.

OnCommand kann für Benachrichtigungen verwendet werden, die als WM_COMMAND-Meldung gesendet wurden.