; 此方法的问题在于,目前单实例没有问题。多实例的话,会造成this.base一致后,都共用的问题
; https://www.autohotkey.com/boards/viewtopic.php?p=235969#p235969

a := New MenuX("item 1", "notepad.exe")
a.Show()

a := "" ; 此行触发 __Delete()

class MenuX {
  __New(MenuItemName, Command) {
    fn := ObjBindMethod(this.base, "_RunMenu", Command)
    Menu, % &this, Add, %MenuItemName%, %fn%
  }

  __Delete() {
    MsgBox delete!
    Menu, % &this, Delete
  }

  Show() {
    Menu, % &this, Show
  }

  _RunMenu(Command, ItemName, ItemPos, MenuName) {
    MsgBox, % Command
  }
}

 

声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。