WM_NOTIFYメッセージで制御通知を受信したときに呼び出される関数やメソッドを登録します。
GuiCtrl.OnNotify(NotifyCode, Callback , AddRemove)
型:整数
監視する制御定義の通知コード。
イベントが発生したときに呼び出す関数、メソッド、またはオブジェクトを指定します。
GUIにイベントシンクがある場合(つまりGui()のEventObjパラメータが指定されている場合)、このパラメータはイベントシンクに属するメソッドの名前であってもよい。それ以外の場合は、このパラメータは関数オブジェクトでなければならない。
コールバックは2つのパラメーターを受け取り、以下のように定義できる:
MyCallback(GuiCtrl, lParam) { ...
パラメータに与える名前は重要ではないが、以下の値が順次割り当てられる:
対応する情報が不要な場合、コールバックのパラメータリストの最後から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)を返す場合、ユーザーがラベルを編集できないようにします。
型:整数
省略されたときは、初期値は 1 です。それ以外の場合は、次のいずれかの番号を指定してください:
ある種のコントロールは、興味深いイベントが発生したり、コントロールがプログラムから情報を要求されたりすると、WM_NOTIFYメッセージを送信します。このメッセージのlParamパラメータは、通知に関する情報を含む構造体へのポインタを含みます。構造の種類は、通知コードと通知を行ったコントロールの種類によって異なりますが、常にNMHDRをベースにしています。
どの通知が利用可能か(もしあれば)、どのような構造を提供し、どのように戻り値を解釈するかについては、コントロールのドキュメントを参照してください。コントロールライブラリ (Microsoft Docs)には、Windows共通の各コントロールへのリンクが含まれています。通知コード(数字)は、Windows SDK、またはインターネットで検索して確認できます。
AutoHotkeyは、idFromと hwndFromフィールドを使用して、どのコントロールが通知を送信したかを識別し、適切なオブジェクトにディスパッチするために使用します。コードフィールドには、通知コードが入ります。これらはコールバックの登録に使用したGuiCtrlと NotifyCodeと一致する必要があるため、スクリプトに役立つことはほとんどない。
OnEventに関するこれらの注意は、OnNotifyにも適用されます:スレッド、GUIを破壊します。
OnCommandは、WM_COMMANDメッセージとして送信される通知に対して使用することができる。