OnNotify

WM_NOTIFYメッセージで制御通知を受信したときに呼び出される関数やメソッドを登録します。

GuiCtrl.OnNotify(NotifyCode, Callback , AddRemove)

パラメータ

NotifyCode

型:整数

監視する制御定義の通知コード。

Callback

型:文字列または関数オブジェクト

イベントが発生したときに呼び出す関数、メソッド、またはオブジェクトを指定します。

GUIにイベントシンクがある場合(つまりGui()EventObjパラメータが指定されている場合)、このパラメータはイベントシンクに属するメソッドの名前であってもよい。Otherwise, this parameter must be a function object.

The callback accepts two parameters and can be defined as follows:

MyCallback(GuiCtrl, lParam) { ...

パラメータに与える名前は重要ではないが、以下の値が順次割り当てられる:

  1. The GuiControl object of the current GUI control.
  2. The address of a notification structure derived from NMHDR. その正確な種類は、制御の種類と通知コードに依存します。If the structure contains additional information about the notification, the callback can retrieve it with NumGet and/or StrGet.

対応する情報が不要な場合、コールバックのパラメータリストの最後から1つ以上のパラメータを省略することができますが、この場合、MyCallback(Param1, *)のように、最後のパラメータとしてアスタリスクを指定する必要があります。

OnEventの注意事項である、この関数とバインドされた関数に関する注意事項は、OnNotifyにも適用されました。

イベントに対して複数のコールバックが登録されている場合、コールバックは空でない値を返し、残りのコールバックが呼ばれないようにすることができます。

The callback's return value may have additional meaning, depending on the notification. 例えば、ListViewの通知LVN_BEGINLABELEDIT(-175または-105)は、コールバックがTRUE(1)を返す場合、ユーザーがラベルを編集できないようにします。

AddRemove

型:整数

省略されたときは、初期値は 1 です。それ以外の場合は、次のいずれかの番号を指定してください:

WM_NOTIFY

ある種のコントロールは、興味深いイベントが発生したり、コントロールがプログラムから情報を要求されたりすると、WM_NOTIFYメッセージを送信します。このメッセージのlParamパラメータは、通知に関する情報を含む構造体へのポインタを含みます。構造の種類は、通知コードと通知を行ったコントロールの種類によって異なりますが、常にNMHDRをベースにしています。

どの通知が利用可能か(もしあれば)、どのような構造を提供し、どのように戻り値を解釈するかについては、コントロールのドキュメントを参照してください。Control Library (Microsoft Docs) contains links to each of the Windows common controls. 通知コード(数字)は、Windows SDK、またはインターネットで検索して確認できます。

AutoHotkeyは、idFromhwndFromフィールドを使用して、どのコントロールが通知を送信したかを識別し、適切なオブジェクトにディスパッチするために使用します。コードフィールドには、通知コードが入ります。Since these must match up to GuiCtrl and NotifyCode used to register the callback, they are rarely useful to the script.

OnEventに関するこれらの注意は、OnNotifyにも適用される:スレッドGUIを破壊します。

OnCommandは、WM_COMMANDメッセージとして送信される通知に対して使用することができる。