OnNotify

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

GuiCtrl.OnNotify(NotifyCode, Callback , AddRemove)

パラメータ

NotifyCode

型:整数

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

Callback

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

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

GUIにイベントシンクがある場合(つまりGui()EventObjパラメータが指定されている場合)、このパラメータはイベントシンクに属するメソッドの名前であってもよい。それ以外の場合は、このパラメータは関数オブジェクトでなければならない。

コールバックは2つのパラメーターを受け取り、以下のように定義できる:

MyCallback(GuiCtrl, lParam) { ...

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

  1. The GuiControl object of the current GUI control.
  2. The address of a notification structure derived from NMHDR. その正確な種類は、制御の種類と通知コードに依存します。構造体が通知に関する追加情報を含む場合、コールバックはNumGetおよび/またはStrGetでそれを取得することができます。

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

OnEventの注意事項である、thisとバインドされた関数に関する注意事項は、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をベースにしています。

どの通知が利用可能か(もしあれば)、どのような構造を提供し、どのように戻り値を解釈するかについては、コントロールのドキュメントを参照してください。コントロールライブラリ (Microsoft Docs)には、Windows共通の各コントロールへのリンクが含まれています。通知コード(数字)は、Windows SDK、またはインターネットで検索して確認できます。

AutoHotkeyは、idFromhwndFromフィールドを使用して、どのコントロールが通知を送信したかを識別し、適切なオブジェクトにディスパッチするために使用します。コードフィールドには、通知コードが入ります。これらはコールバックの登録に使用したGuiCtrlNotifyCodeと一致する必要があるため、スクリプトに役立つことはほとんどない。

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

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