找回密码
 加入
搜索
查看: 4681|回复: 10

[GUI管理] [已解决]关于调整GUI窗口内部大小的问题

  [复制链接]
发表于 2010-4-2 14:49:02 | 显示全部楼层 |阅读模式
本帖最后由 zjimmy 于 2010-4-3 21:40 编辑

比如GUICreate了一个窗口,宽度高度分别是 w 和 h。
我希望可以修改这个窗口的大小。。。
如果用WinMove,参数里的宽度和高度依然使用 w 和 h ,这时候与一开始GUICreate是有区别的,原因在于:不同的系统主题风格,会导致WinGetPos的宽度和高度都不一样。。。

怎么解决这一问题?也就是如何不受系统主题的影响?
貌似WinMove调整的是包含GUI窗口周边在内的窗口大小,而不是仅仅调整GUI的内部大小。我希望只调整GUI的内部大小。

不知道我的问题说清楚了没有。。。


问题虽然没有直接解决,不过通过8楼A版的方法,也算是曲线解决了!感谢afan和大家的帮助!

评分

参与人数 1金钱 +10 收起 理由
afan + 10 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

发表于 2010-4-2 21:37:55 | 显示全部楼层
在GUI里面建立组,所有的控件都放到组里,控件的宽高根据组的大小指定。
只改变组的宽、高值。
不知道行不行得通,我自己没有试过。
发表于 2010-4-2 21:59:32 | 显示全部楼层
用相对坐标和相对宽度就行了
 楼主| 发表于 2010-4-2 23:52:51 | 显示全部楼层
用相对坐标和相对宽度就行了
netegg 发表于 2010-4-2 21:59



    不是很明白,可以详细说一下么?

我要调整的是“GUI内部”,不是“GUI控件”。
 楼主| 发表于 2010-4-2 23:55:03 | 显示全部楼层
本帖最后由 zjimmy 于 2010-4-3 00:03 编辑

不同的系统主题,GUICreate出来的窗口标题栏高度不一样,边界的粗细也不一样,这就导致了实际WinGetPos得到的宽和高并不是与GUICreate的相一致。

这么说吧,我希望找到一种方法来“GUIMove”,而不是WinMove。
发表于 2010-4-3 11:56:38 | 显示全部楼层
明白了,要获取系统度量单位?
 楼主| 发表于 2010-4-3 21:13:49 | 显示全部楼层
也不是。
比如我们GUICreate了一个宽和高分别是w,h的窗口,然后用窗口信息工具查看,会发现这个窗口的宽和高不是w,h,因为有一层系统默认的皮肤在上面。
发表于 2010-4-3 21:24:22 | 显示全部楼层
不知道有用不
#Include <WinAPI.au3>
#Include <WindowsConstants.au3>
$h=_WinAPI_GetSystemMetrics(4) 
MsgBox(0,"以像素计算的普通窗口标题的高度",$h)
$bk=_WinAPI_GetSystemMetrics($SM_CYEDGE) 
MsgBox(0,"以像素计算的3d边框宽度",$bk)
 楼主| 发表于 2010-4-3 21:28:28 | 显示全部楼层
这么说吧,GUICreate(width,height)和WinMove(width,height),窗口的宽和高并不一样。
 楼主| 发表于 2010-4-3 21:31:13 | 显示全部楼层
不知道有用不
afan 发表于 2010-4-3 21:24



    A版出动了!貌似这个可以解决,我试试去!
 楼主| 发表于 2010-4-3 21:40:40 | 显示全部楼层
问题虽然没有直接解决,不过通过8楼A版的方法,也算是曲线解决了!感谢afan和大家的帮助!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-18 13:39 , Processed in 0.136542 second(s), 28 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表