水木子 发表于 2009-9-2 19:49:23

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

本帖最后由 水木子 于 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

afan 发表于 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

afan 发表于 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 http://www.autoitx.com/images/common/back.gif

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

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

顺着你的指点,我又翻阅了帮助文档,明白了其中的意思。

afan 发表于 2009-9-2 20:33:15

呵呵,看到过就记下了~~~
如果都是保持位置不变前面加上那句就行了。
不过如果你的窗口是中部拉伸,那就要用到GUICtrlSetResizing调整那些相对位置了~

水木子 发表于 2009-9-2 20:44:42

嗯!谢谢前辈,我还想问,我怎么给新的窗体(调整以后的空白部分)添加控件呢?

PS:我是不是挺烦人啊:face (2):

afan 发表于 2009-9-2 20:48:34

先创建那些控件,在窗体展开前就已经存在了,只是窗体没展开看不见而已。展开后它们自然就出现了~

水木子 发表于 2009-9-2 20:49:38

本帖最后由 水木子 于 2009-9-2 20:51 编辑

哦!嗦德思嘞:face (37):

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

很想给你加分,但是不知道为什么不行,是不是我等级太低了,没资格?

afan 发表于 2009-9-2 21:01:52

哈哈,心领啦 ^_^

afan 发表于 2009-9-2 21:02:50

在你这栋楼我已经赚了60分啦,呵呵

水木子 发表于 2009-9-2 21:11:32

呵呵!你倒挺会想哦!

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

PS:现在都还有问题,哇!不好意思问了:face (27):

afan 发表于 2009-9-2 21:14:55

我也丢一句“带机哦补” ,呵呵

水木子 发表于 2009-9-2 21:17:48

呵呵!先消化下前辈指点的,等学到那里了再问,一次问多了也记不住。

afan 发表于 2009-9-2 21:19:21

嗦德思~~ 有问题咱们再一起学习~~

Mika 发表于 2016-7-10 22:44:02

回复 14# afan


    想问下版主,窗口调整大小的最小值能不能自己定义呀? 就是不让它无限调小,在设定的最小值和窗口最大化之间调整。非常感谢~~~
页: [1]
查看完整版本: 请教:如何调整窗体(GUI)大小。[已解决]