关于父子窗口缩放问题涉及到控件的位置以及缩放,求大侠赐教(已解决)
本帖最后由 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
不要第19行的$Form1父窗口参数行吗? 回复 2# 志艺风云
就是要加19行那一行 加个主控件宽度函数:
#include <WinAPI.au3>
_WinAPI_GetWindowRect ( $hWnd )
将该控件的宽度设为主窗口宽度减去你预留的
第二个也同理,浅见。感觉应该是可以设置样式自动变换吧? 回复 3# cqboyqx
如果第19行必须设置父窗口参数$Form1,那么我想到的方法比较复杂了,主要的原因是主窗口最大化、缩放等,$Form1_1窗口的大小没有变,所以控件也没有调整大小。
我想到的方法是加上主窗口的事件等。
Case $GUI_EVENT_MAXIMIZE
GUISetState(@SW_MAXIMIZE, $Form1_1)
Case $GUI_EVENT_RESTORE
GUISetState(@SW_RESTORE, $Form1_1) 回复 5# 志艺风云
用你这个没有反应 回复 4# 449199199
你这个怎么用,看有没有效果 按理你试试,删除掉19行后面的 , $Form1是最简单的,子窗口设置成特殊的风格后使用没这么简单的啊。
你看看这贴
多层TAB可任意 拉动尺寸、最大化、还原,控件跟着变大 回复 8# 志艺风云
这个我用过了,控制不了控件的变化 #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
回复 10# 志艺风云
没有达到那个效果,你这一拉主窗口,控件都跑了 回复 11# cqboyqx
你下载完整10楼的代码来试吗,我AutoIt版本 : 3.3.14.2,一点问题都没。 回复 12# 志艺风云
你的代碼有效 他應該是點擊 著 沒放開 所以他看不到效果 回复 10# 志艺风云
回复 13# kk_lee69
大侠哈,这个确确实实不好弄哈
页:
[1]
2