# OnCommand

注册一个函数或方法, 当通过 WM_COMMAND 消息接收到控件通知时调用.

    GuiControl.OnCommand(NotifyCode, Callback , AddRemove)

## 参数

GuiControl

  类型: 对象

  要监控的控件的 GuiControl 对象.

NotifyCode

  类型: 整数

  要监控的控件定义的通知代码.

Callback

  类型: 字符串或函数对象

  事件发生时要调用的函数, 方法或对象.

  如果 GUI 有事件接收器(即, 如果指定了 Gui() 的 EventObj 参数), 那么这个参数可能是属于事件接收器的方法的名称.

  否则, 这个参数必须是一个函数对象.

AddRemove

  类型: 整数

  如果为空或省略, 则默认为 1(在任何先前注册的回调之后调用回调). 否则, 指定下列数字之一:

  - 1 = 在任何先前注册的回调之后调用回调.
  - -1 = 在任何先前注册的回调之前调用回调.
  - 0 = 不调用该回调.

## WM_COMMAND

某些类型的控件在发生要监控事件时, 会发送一条 WM_COMMAND 消息. 这些通常是标准的 Windows 控件, 它们已经存在很长时间了, 因为新的控件使用 WM_NOTIFY 消息(请参阅 OnNotify). 常用的通知代码被转换成事件, 脚本可以用 OnEvent 来监视.

消息的参数包含控件 ID, HWND 和通知代码, AutoHotkey 使用这些参数将通知发送到相应的回调. 没有额外的参数.

要确定哪些通知是可用的(如果有的话), 请参考控件的文档. Control Library (MSDN) 包含了每个 Windows 常用控件的链接(然而, 只有少数控件使用 WM_COMMAND). 通知代码(编号) 可以在 Windows SDK 中找到, 或者在互联网上搜索.

## Callback 参数

OnEvent 中关于 `this` 和绑定函数的说明, 也适用于 OnCommand.

回调接收一个参数:

    Callback(GuiControl)

## Callback 返回值

如果一个事件已经注册了多个回调, 回调可以返回一个非空值, 以防止任何剩余的回调被调用.

返回值会被控件忽略.

## 相关

OnEvent 的说明也适用于 OnCommand: 线程, 销毁 GUI.

OnNotify 可以用于作为 WM_NOTIFY 消息发送的通知.

dftg