找回密码
 加入
搜索
查看: 4865|回复: 14

[AU3基础] 请教:如何调整窗体(GUI)大小。[已解决]

[复制链接]
发表于 2009-9-2 19:49:23 | 显示全部楼层 |阅读模式
本帖最后由 水木子 于 2010-11-23 23:00 编辑

各位前辈好!
下面是我做的窗体,我想通过“设置”调整窗体大小,并在调整后的窗体上创建新的控件。
窗体大小是调整了,但是窗体内部的控件也跟着变动了,这是怎么回事啊?
搜索了几遍未果,望各位指教啊!
#include <WindowsConstants.au3>

$Form1 = GUICreate('表单', 250, 350, -1, -1)
$ListView1 = GUICtrlCreateListView('项目1        |项目2        ', 15, 15, 220, 240)
$Button1 = GUICtrlCreateButton('设置→', 30, 280, 75, 30, $WS_GROUP)
$Button2 = GUICtrlCreateButton('退出', 150, 280, 75, 30, $WS_GROUP)
GUISetState()

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case - 3, $Button2
                        Exit

                Case $Button1
                        If GUICtrlRead($Button1) = '设置→' Then
                                WinMove($Form1, '', Default, Default, 500, Default)
                                GUICtrlSetData($Button1, '设置←')
                        ElseIf GUICtrlRead($Button1) = '设置←' Then
                                WinMove($Form1, '', Default, Default, 256, Default)
                                GUICtrlSetData($Button1, '设置→')
                        EndIf
        EndSwitch
WEnd
发表于 2009-9-2 19:53:00 | 显示全部楼层
本帖最后由 afan 于 2009-9-2 19:59 编辑

如果控件很多可以在在前面加上即可
Opt('GUIResizeMode', 802)
即:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt('GUIResizeMode', 802)
$Form1 = GUICreate("表单", 250, 350, -1, -1)
$ListView1 = GUICtrlCreateListView("项目1        |项目2        ", 15, 15, 220, 240)
$Button1 = GUICtrlCreateButton("设置→", 30, 280, 75, 30, $WS_GROUP)
$Button2 = GUICtrlCreateButton("退出", 150, 280, 75, 30, $WS_GROUP)
GUISetState(@SW_SHOW)

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE,$Button2
                        Exit

                Case $Button1
                        If GUICtrlRead($Button1) = "设置→" Then
                                WinMove  ($Form1,"", Default, Default, 500, Default )
                                GUICtrlSetData($Button1,"设置←")
                        ElseIf GUICtrlRead($Button1) = "设置←" Then
                                WinMove  ($Form1,"", Default, Default, 256, Default )
                                GUICtrlSetData($Button1,"设置→")
                        EndIf
                Case $Button2
        EndSwitch
WEnd
发表于 2009-9-2 19:57:36 | 显示全部楼层
如果某些控件需要单独调整位置,比如相对上部位置不变、或者相对底部位置不变等等,可以在创建控件后使用
GUICtrlSetResizing ( 控件ID, 调整方式 ) 进行调整。比如 GUICtrlSetResizing (-1, $GUI_DOCKALL) 即表示在窗口被调整大小时控件位置将一直不变
 楼主| 发表于 2009-9-2 20:16:41 | 显示全部楼层
本帖最后由 水木子 于 2009-9-2 20:26 编辑
如果某些控件需要单独调整位置,比如相对上部位置不变、或者相对底部位置不变等等,可以在创建控件后使用
GUICtrlSetResizing ( 控件ID, 调整方式 ) 进行调整。比如 GUICtrlSetResizing (-1, $GUI_DOCKALL) 即表示在 ...
afan 发表于 2009-9-2 19:57


谢谢!又是afan前辈,看嘛你还老说自己是新人,不厉害,说谎。。。

呵呵!回到正题,其实就是添加了 Opt('GUIResizeMode', 802)  ?

顺着你的指点,我又翻阅了帮助文档,明白了其中的意思。
发表于 2009-9-2 20:33:15 | 显示全部楼层
呵呵,看到过就记下了~~~
如果都是保持位置不变前面加上那句就行了。
不过如果你的窗口是中部拉伸,那就要用到GUICtrlSetResizing调整那些相对位置了~
 楼主| 发表于 2009-9-2 20:44:42 | 显示全部楼层
嗯!谢谢前辈,我还想问,我怎么给新的窗体(调整以后的空白部分)添加控件呢?

PS:我是不是挺烦人啊
发表于 2009-9-2 20:48:34 | 显示全部楼层
先创建那些控件,在窗体展开前就已经存在了,只是窗体没展开看不见而已。展开后它们自然就出现了~
 楼主| 发表于 2009-9-2 20:49:38 | 显示全部楼层
本帖最后由 水木子 于 2009-9-2 20:51 编辑

哦!嗦德思嘞

谢谢!非常感谢你耐心的解答!

很想给你加分,但是不知道为什么不行,是不是我等级太低了,没资格?
发表于 2009-9-2 21:01:52 | 显示全部楼层
哈哈,心领啦 ^_^
发表于 2009-9-2 21:02:50 | 显示全部楼层
在你这栋楼我已经赚了60分啦,呵呵
 楼主| 发表于 2009-9-2 21:11:32 | 显示全部楼层
呵呵!你倒挺会想哦!

今后还有很多问题需要请教你,还望你不吝赐教哦!

PS:现在都还有问题,哇!不好意思问了
发表于 2009-9-2 21:14:55 | 显示全部楼层
我也丢一句“带机哦补” ,呵呵
 楼主| 发表于 2009-9-2 21:17:48 | 显示全部楼层
呵呵!先消化下前辈指点的,等学到那里了再问,一次问多了也记不住。
发表于 2009-9-2 21:19:21 | 显示全部楼层
嗦德思~~ 有问题咱们再一起学习~~
发表于 2016-7-10 22:44:02 | 显示全部楼层
回复 14# afan


    想问下版主,窗口调整大小的最小值能不能自己定义呀? 就是不让它无限调小,在设定的最小值和窗口最大化之间调整。非常感谢~~~
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-9-29 01:21 , Processed in 0.083488 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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