You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AutoHotkey中获取GUI窗口尺寸并实现Edit控件自动适配?

如何让AutoHotkey 2.0的Edit控件随GUI窗口自动调整大小?

我正在尝试制作一个内嵌Edit控件的GUI窗口,希望该控件能自动调整大小以适配GUI窗口。请问如何获取GUI窗口的当前尺寸?

以下是我的代码:

#Requires AutoHotkey 2.0

ResizeWindow(*) {
    EditBox.Opt("w" TextBoxGUI.Width " h" TextBoxGUI.Height) ; 这里存在问题
}

TextBoxGUI := Gui("+Resize", "TextBox GUI")
    TextBoxGUI.OnEvent("Size", ResizeWindow)
TextBoxGUI.SetFont("s15 Norm", "Lexend")
EditBox := TextBoxGUI.Add("Edit", "x0 y0 w500 h600")

TextBoxGUI.Show("w500 h600")

问题分析与解决方案

你的代码存在两个核心问题:

  1. 错误的尺寸获取方式:TextBoxGUI.Width和TextBoxGUI.Height包含了窗口标题栏、边框等非客户区域的尺寸,并非Edit控件可填充的实际区域。
  2. 控件调整方法错误:Opt方法的参数拼接格式有误,且该方法更适合修改控件样式,调整尺寸推荐使用更直观的Move方法。

修正后的完整代码

#Requires AutoHotkey 2.0

ResizeWindow(*) {
    ; 使用ClientWidth/ClientHeight获取客户区实际尺寸,调整Edit控件占满整个区域
    EditBox.Move(0, 0, TextBoxGUI.ClientWidth, TextBoxGUI.ClientHeight)
}

TextBoxGUI := Gui("+Resize", "TextBox GUI")
TextBoxGUI.OnEvent("Size", ResizeWindow)
TextBoxGUI.SetFont("s15 Norm", "Lexend")
; 初始添加控件时无需指定固定尺寸,窗口显示后会自动触发Size事件调整
EditBox := TextBoxGUI.Add("Edit", "x0 y0")

TextBoxGUI.Show("w500 h600")

关键说明

  • TextBoxGUI.ClientWidth / TextBoxGUI.ClientHeight:专门获取GUI窗口内部客户区域的宽高,这是Edit控件可以填充的有效区域,完全排除了窗口边框、标题栏的占用。
  • EditBox.Move(0, 0, w, h):直接设置控件的位置(x=0,y=0)和尺寸,确保控件始终填满整个客户区。
  • 初始添加Edit控件时无需固定宽高,窗口Show后会自动触发Size事件,调用ResizeWindow函数完成适配。

内容的提问来源于stack exchange,提问作者Speedy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 17:47:42