cqboyqx 发表于 2018-4-2 11:15:36

关于父子窗口缩放问题涉及到控件的位置以及缩放,求大侠赐教(已解决)

本帖最后由 cqboyqx 于 2018-4-7 19:13 编辑

关于父子窗口缩放涉及到控件的位置以及缩放问题,求大侠赐教
论坛找了很多大侠例子,都没有处理好,最终效果达到如果注释掉19行后的那种效果,不知能不能实现

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <TabConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 539, 330, -1, -1,$WS_MAXIMIZEBOX+ $WS_MINIMIZEBOX+ $WS_SIZEBOX)
$Tab1 = GUICtrlCreateTab(8, 8, 513, 97)
GUICtrlSetResizing(-1,2+4+544)
$TabSheet1 = GUICtrlCreateTabItem("TabSheet1")
$Edit1 = GUICtrlCreateEdit("", 16, 40, 489, 50)
GUICtrlSetResizing(-1,2+4+544)
GUICtrlSetData(-1, "左上右不变,高度不变,随窗口变宽而变宽")
$TabSheet2 = GUICtrlCreateTabItem("TabSheet2")
GUICtrlCreateTabItem("")
GUISetState()

$Form1_1 = GUICreate("", 539, 330, -2, -2, BitOr($WS_CHILD,$WS_TABSTOP), -1, $Form1)
   $Group1 = GUICtrlCreateGroup("Group1", 8, 112, 513, 185)
   GUICtrlSetResizing(-1,102)
   $ListView1 = GUICtrlCreateListView("", 16, 128, 370, 158);上下左右部变,随窗口同等比例变化
   GUICtrlSetResizing(-1,102)
   $Edit2 = GUICtrlCreateEdit("", 392, 128, 113, 161)
   GUICtrlSetResizing(-1,4+32+64+256)
   GUICtrlSetData(-1, "上下右不变,随窗口"&@CRLF&"拉宽移位,拉高而变高")
   GUICtrlCreateGroup("", -99, -99, 1, 1)
   GUISetState()
#EndRegion ### END Koda GUI section ###

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

        EndSwitch
WEnd

志艺风云 发表于 2018-4-2 11:41:38

不要第19行的$Form1父窗口参数行吗?

cqboyqx 发表于 2018-4-2 11:57:08

回复 2# 志艺风云
就是要加19行那一行

449199199 发表于 2018-4-2 12:08:54

加个主控件宽度函数:
#include <WinAPI.au3>
_WinAPI_GetWindowRect ( $hWnd )
将该控件的宽度设为主窗口宽度减去你预留的

第二个也同理,浅见。感觉应该是可以设置样式自动变换吧?

志艺风云 发表于 2018-4-2 12:16:13

回复 3# cqboyqx


   如果第19行必须设置父窗口参数$Form1,那么我想到的方法比较复杂了,主要的原因是主窗口最大化、缩放等,$Form1_1窗口的大小没有变,所以控件也没有调整大小。
我想到的方法是加上主窗口的事件等。
                Case $GUI_EVENT_MAXIMIZE
                        GUISetState(@SW_MAXIMIZE, $Form1_1)
                Case $GUI_EVENT_RESTORE
                        GUISetState(@SW_RESTORE, $Form1_1)

cqboyqx 发表于 2018-4-2 12:46:40

回复 5# 志艺风云

用你这个没有反应

cqboyqx 发表于 2018-4-2 12:48:45

回复 4# 449199199
你这个怎么用,看有没有效果

志艺风云 发表于 2018-4-2 13:01:08

按理你试试,删除掉19行后面的 , $Form1是最简单的,子窗口设置成特殊的风格后使用没这么简单的啊。

你看看这贴
多层TAB可任意 拉动尺寸、最大化、还原,控件跟着变大

cqboyqx 发表于 2018-4-2 13:10:15

回复 8# 志艺风云


    这个我用过了,控制不了控件的变化

志艺风云 发表于 2018-4-2 14:02:28

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <TabConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 539, 330, -1, -1, $WS_MAXIMIZEBOX + $WS_MINIMIZEBOX + $WS_SIZEBOX)
$Tab1 = GUICtrlCreateTab(8, 8, 513, 97)
GUICtrlSetResizing(-1, 2 + 4 + 544)
$TabSheet1 = GUICtrlCreateTabItem("TabSheet1")
$Edit1 = GUICtrlCreateEdit("", 16, 40, 489, 50)
GUICtrlSetResizing(-1, 2 + 4 + 544)
GUICtrlSetData(-1, "左上右不变,高度不变,随窗口变宽而变宽")
$TabSheet2 = GUICtrlCreateTabItem("TabSheet2")
GUICtrlCreateTabItem("")
GUISetState()

$Form1_1 = GUICreate("", 540, 212, -2, 100, BitOR($WS_CHILD, $WS_TABSTOP), -1, $Form1)
$Group1 = GUICtrlCreateGroup("Group1", 8, 10, 513, 185)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKRIGHT + $GUI_DOCKTOP + $GUI_DOCKBOTTOM)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$ListView1 = GUICtrlCreateListView("", 16, 25, 370, 158)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 50)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKRIGHT + $GUI_DOCKTOP + $GUI_DOCKBOTTOM)
$Edit2 = GUICtrlCreateEdit("", 392, 25, 113, 161)
GUICtrlSetData(-1, "上下右不变,随窗口##CRLF##拉宽移位,拉高而变高")
GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKTOP + $GUI_DOCKBOTTOM + $GUI_DOCKWIDTH)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $GUI_EVENT_RESIZED
                        RESIZED()
                Case $GUI_EVENT_MAXIMIZE
                        RESIZED()
                Case $GUI_EVENT_RESTORE
                        RESIZED()
        EndSwitch
WEnd

Func RESIZED()
        Local $aClientSize = WinGetClientSize($Form1)
        ; 主窗口客户区的高度和宽度.
        WinMove($Form1_1, "", Default, Default, $aClientSize, $aClientSize - 100)
EndFunc   ;==>RESIZED

cqboyqx 发表于 2018-4-2 14:28:26

回复 10# 志艺风云

没有达到那个效果,你这一拉主窗口,控件都跑了

志艺风云 发表于 2018-4-2 15:09:18

回复 11# cqboyqx


    你下载完整10楼的代码来试吗,我AutoIt版本 : 3.3.14.2,一点问题都没。

kk_lee69 发表于 2018-4-2 15:44:20

回复 12# 志艺风云

你的代碼有效 他應該是點擊 著 沒放開 所以他看不到效果

cqboyqx 发表于 2018-4-2 15:53:37

回复 10# 志艺风云

cqboyqx 发表于 2018-4-2 15:55:08

回复 13# kk_lee69

大侠哈,这个确确实实不好弄哈
页: [1] 2
查看完整版本: 关于父子窗口缩放问题涉及到控件的位置以及缩放,求大侠赐教(已解决)