首页 > 其他分享 >[AHK2-UI] 实现自己的Show()方法

[AHK2-UI] 实现自己的Show()方法

时间:2023-08-23 14:45:48浏览次数:38  
标签:show AHK2 ahk Show ins 实例 UI 终止

为什么

这其实是一种两阶段XX的设计模式,比如两阶段终止:调用终止方法时并不立即终止,而是设置终止信号,由别人自身决定终止的操作。

同样,实现Show()方法算是一种两阶段启动:外部调用Show()方法时,由自身决定show前做什么,show后又做什么,以及如何show。

例子

这是一个Show()方法:

static Show(config, *) {
  ; singleton
  for w in WinGetList('ahk_pid ' ProcessExist())
    if (g := GuiFromHwnd(w)) && g.base = this.Prototype
      return g.Show()
  ; =========Show()前

  ins := PlanEGui(config.theme)
  ins.Show('Minimize')

  ; =========Show()后
  WinSetTransparent(0, 'ahk_id' ins.Hwnd)
  ins.Restore()

  ins.GetClientPos(, , , &ch)
  ins.Move(, A_ScreenHeight / 4, , 0)

  WinSetTransparent(255, 'ahk_id' ins.Hwnd)
  loop ch {
    ins.Move(, , , A_Index)
  }

  ins.AddText('xm+5 h800 w400 vHistory c' ins.currTheme.edit_Fc,)
  ins['History'].SetFont('s12')
  ControlFocus ins['SendBox'].Hwnd, "A"
}

在这个Show()方法中,

  • show前:判断是否已存在当前脚本的实例,如果有返回此实例。
  • show时:设置必须的gui选项并组合传入的option。
  • show后:
    • 实现更好的启动画面:将窗口实例透明度设为0,然后恢复窗口并将宽设为0,再逐渐恢复宽度,使窗口缓慢出现。
    • 为实例进行额外的操作。
    • 聚焦期望的控件。

标签:show,AHK2,ahk,Show,ins,实例,UI,终止
From: https://www.cnblogs.com/refiz/p/17651583.html

相关文章

  • Python基础入门学习笔记 077 GUI的终极选择:Tkinter14
    Tkinter提供了三种标准对话框模块,分别是:messagebox、filedialog、colorchoosermessagebox(消息对话框)实例1:askokcancel函数1fromtkinterimport*23print(messagebox.askokcancel("FishCDemo","发射核弹?"))45mainloop() 实例2:askquestion函数 实例3:asire......
  • [AHK2-UI] 使用#Include
    #Include是什么一句话介绍:可以将一个脚本的代码插入到Include语句的位置。作用使用#Include可以实现分模块开发,对于代码组织有十分重要的作用。通常使用小型脚本(只有些热键和热字串)不需要使用;但当脚本不仅仅是这些,还要写ui界面或更繁杂的功能时,我们最好将ui和数据处理的逻辑分......
  • Python基础入门学习笔记 074 GUI的终极选择:Tkinter11
    事件绑定对于每个组件来说,可以通过bind()方法将函数或方法绑定到具体的事件上。当被触发的事件满足该组件绑定的事件时,Tkinter就会带着事件描述去调用handler()方法实例1:捕获单击鼠标位置1fromtkinterimport*23root=Tk()45defcallback(event):6prin......
  • Python基础入门学习笔记 075 GUI的终极选择:Tkinter12
    Message组件Message(消息)组件是Label组件的变体,用于显示多行文本信息。Message组件能够自动换行,并调整文本的尺寸使其适应给定得尺寸。实例1:1fromtkinterimport*23root=Tk()4w1=Message(root,text="这是一则消息",width=100)5w1.pack()6w2=Message(root,......
  • Python基础入门学习笔记 071 GUI的终极选择:Tkinter8
    Canvas(画布)组件一个可以让你随心所欲绘制界面的组件。通常用于显示和编辑图形,可以用它来绘制直线、图形、多边形,甚至是绘制其他组件。实例1:1fromtkinterimport*2root=Tk()3#创建canvas对象框,设置其宽度、高度与背景色4w=Canvas(root,width=200,height=100,b......
  • Python基础入门学习笔记 073 GUI的终极选择:Tkinter10
    Munu组件Tkinter提供了一个Menu组件,用于实现顶级菜单、下拉菜单和弹出菜单。实例1:创建一个顶级菜单(或称窗口主菜单)1fromtkinterimport*23defcallback():4print("被调用了")56root=Tk()789menubar=Menu(root)#创建一个顶级菜单10m......
  • iOS 在UILabel显示不同的字体和颜色(转)
    在项目开发中,我们经常会遇到在这样一种情形:在一个UILabel使用不同的颜色或不同的字体来体现字符串,在iOS6以后我们可以很轻松的实现这一点,官方的API为我们提供了UILabel类的attributedText,使用不同颜色和不同字体的字符串,我们可以使用NSAttributedText和NSMutableAttributed......
  • ios8 UITableView设置 setSeparatorInset:UIEdgeInsetsZero不起作用的解决办法
    在ios7中,UITableViewCell左侧会有默认15像素的空白。这时候,设置setSeparatorInset:UIEdgeInsetsZero能将空白去掉。但是在ios8中,设置setSeparatorInset:UIEdgeInsetsZero已经不起作用了。下面是解决办法首先在viewDidLoad方法加入以下代码: if([self.tableViewrespondsToSelect......
  • UITextField中文输入法输入时对字符长度的限制 输入时对字符类型的限制
    检索一个字符串的长度的话:直接用length,去进行判断就行了,如果要检索字符串是否是自己要限制的类型的话,可以用正则表达式:举个例子:  匹配9-15个由字母/数字组成的字符串的正则表达式:NSString*regex=@"^[A-Za-z0-9]{9,15}$";NSPredicate*pred=[NSPredicatepredicateWi......
  • Unity UGUI的Image(图片)组件的介绍及使用
    UGUI的Image(图片)组件的介绍及使用1.什么是UGUI的Image(图片)组件?UGUI的Image(图片)组件是Unity引擎中的一种UI组件,用于显示2D图像。它提供了一种简单而灵活的方式来在游戏中加载和显示图片。2.为什么要使用UGUI的Image(图片)组件?使用UGUI的Image组件可以方便地在游戏中展示各种图......