; 多页面选项卡叠加的例子  By FeiYue
; 注意:Tab3不能叠加到其他页面

ids:=[]
Gui, +Hwndmain_id
Gui, Margin, 15, 15
;-- Tab3不能叠加到其他页面
Gui, Add, Tab3, w500 h300 AltSubmit, 1|2|3
Loop, 3 {
  Gui, Tab, % i:=A_Index
  Gui, Add, Edit, w200 Section Hwndid, % 随机数()
  ids.Push(id)
  Gui, Add, Button, x+15 wp Hwndid gRun1, OK
  ids.Push(id)
  ;-- 在页面中设置一个控件作为父窗口
  Gui, Add, Text, xs Hwndid w415 h200
  ;----------------------------
  ;-- 根据父窗口的宽高生成一个只有Tab2控件的子窗口
  GuiControlGet, p, Pos, %id%
  Gui, New, +Hwndsub_id +Parent%id% -Caption +ToolWindow
  Gui, Add, Tab2, x0 y0 w%pW% h%pH%, %i%-1|%i%-2|%i%-3
  Gui, Margin, 15, 15
  Loop, 3 {
    Gui, Tab, % j:=A_Index
    Gui, Add, Edit, w180 Section Hwndid, % 随机数()
    ids.Push(id)
    Gui, Add, Button, x+15 wp Hwndid gRun1, OK
    ids.Push(id)
    ;-- 在页面中设置一个控件作为父窗口
    Gui, Add, Text, xs Hwndid w375 h100
    ;----------------------------
    ;-- 根据父窗口的宽高生成一个只有Tab2控件的子窗口
    GuiControlGet, p, Pos, %id%
    Gui, New, +Hwndsub_sub_id +Parent%id% -Caption +ToolWindow
    Gui, Add, Tab2, x0 y0 w%pW% h%pH%, %i%-%j%-1|%i%-%j%-2|%i%-%j%-3
    Gui, Margin, 15, 15
    Loop, 3 {
      Gui, Tab, % A_Index
      Gui, Add, Edit, w150 Hwndid, % 随机数()
      ids.Push(id)
      Gui, Add, Button, x+15 w150 Hwndid gRun1, OK
      ids.Push(id)
    }
    Gui, Tab
    Gui, Margin, 0, 0
    ;-- 设定边距为零后只显示Tab2控件的大小
    Gui, Show, NA
    ;----------------------------
    ;-- 返回父窗口的默认GUI编号
    Gui, %sub_id%: Default
  }
  Gui, Tab
  Gui, Margin, 0, 0
  ;-- 设定边距为零后只显示Tab2控件的大小
  Gui, Show, NA
  ;----------------------------
  ;-- 返回父窗口的默认GUI编号
  Gui, %main_id%: Default
}
Gui, Tab
Gui, Show
;-------------------------
Menu, Tray, Add
Menu, Tray, Add, 显示窗口
Menu, Tray, Default, 显示窗口
Menu, Tray, Click, 1
return

显示窗口() {
  Gui, 1:Show
}

随机数() {
  Random, r
  return r
}

;-- 使用函数的好处是可以得到控件的 Hwnd
;-- 函数中同样可以使用 A_GuiControl
Run1(hwnd, arg*) {
  global ids
  ;-- 根据控件的 Hwnd 得到控件的序号
  i:=0
  For k,v in ids
    if (v=hwnd)
      i:=k
  ;-- 根据控件的序号得到目标控件的 hwnd
  hwnd:=ids[i-1]
  if !DllCall("IsWindow", "ptr",hwnd)
    return
  GuiControlGet, s,, %hwnd%
  MsgBox, 4096,, %s%
}

F1:: 显示窗口()

F4:: 
IfWinExist, ahk_class Notepad
{
  ControlSend,, ^s
  Sleep, 500
}
Reload
return

 

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