[已解决]关于窗口坐标的问题?
本帖最后由 newuser 于 2010-8-17 14:44 编辑为什么$Form2中的第2个Group不显示?见代码:#include <GUIConstants.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)
OnAutoItExitRegister("Quit");注册1个当AutoIt退出时执行的函数Quit
$Form2=GUICreate("安装选项",170,273,-1,-1)
GUICtrlCreateGroup("推荐软件安装",-1,-1,170,100)
GUICtrlCreateGroup("",-99,-99,1,1)
Local $Form2Pos=WinGetPos($Form2)
;返回一个含有下列信息的4维数组:
;$array = X 坐标
;$array = Y 坐标
;$array = 宽度
; $array = 高度
MsgBox(0,'',$Form2Pos&@CRLF&$Form2Pos)
GUICtrlCreateGroup("可选软件安装",$Form2Pos+1,$Form2Pos+102,170,150)
GUICtrlCreateGroup("",-99,-99,1,1)
$Form1=GUICreate ( "我的第一个窗口", 484, 273,-1,-1)
GUISetOnEvent($GUI_EVENT_CLOSE, "quit")
$check4=GUICtrlCreateCheckbox("安装", 20,235,50,25)
GUICtrlSetOnEvent($check4, "check4")
GUISetState (@SW_SHOW,$Form1)
While 1
Sleep(1000)
WEnd
Func check4()
Local $Form1Pos=WinGetPos($Form1)
;返回一个含有下列信息的4维数组:
;$array = X 坐标
;$array = Y 坐标
;$array = 宽度
; $array = 高度
If GUICtrlRead($check4)=$GUI_CHECKED Then
WinMove($Form2,"",$Form1Pos+$Form1Pos,$Form1Pos)
;WinMove ( "窗口标题", "窗口文本", X坐标, Y坐标 [, 宽度 [, 高度[,速度]]] )
GUISetState(@SW_SHOW,$Form2)
Else
GUISetState(@SW_HIDE,$Form2)
EndIf
EndFunc
Func Quit()
Exit
EndFunc 回复 1# newuser
悬浮等待中... #include <GUIConstants.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)
OnAutoItExitRegister("Quit");注册1个当AutoIt退出时执行的函数Quit
$Form2=GUICreate("安装选项",170,273,-1,-1)
GUICtrlCreateGroup("推荐软件安装",-1,-1,170,100)
GUICtrlCreateGroup("",-99,-99,1,1)
Local $Form2Pos=WinGetPos($Form2)
;返回一个含有下列信息的4维数组:
;$array = X 坐标
;$array = Y 坐标
;$array = 宽度
; $array = 高度
MsgBox(0,'',$Form2Pos&@CRLF&$Form2Pos)
GUICtrlCreateGroup("可选软件安装",0,$Form2Pos-118,170,150);若用$Form2Pos+1作为左侧,则超出显示范围。
GUICtrlCreateGroup("",-99,-99,1,1)
$Form1=GUICreate ( "我的第一个窗口", 484, 273,-1,-1)
GUISetOnEvent($GUI_EVENT_CLOSE, "quit")
$check4=GUICtrlCreateCheckbox("安装", 20,235,50,25)
GUICtrlSetOnEvent($check4, "check4")
GUISetState (@SW_SHOW,$Form1)
While 1
Sleep(1000)
WEnd
Func check4()
Local $Form1Pos=WinGetPos($Form1)
;返回一个含有下列信息的4维数组:
;$array = X 坐标
;$array = Y 坐标
;$array = 宽度
; $array = 高度
If GUICtrlRead($check4)=$GUI_CHECKED Then
WinMove($Form2,"",$Form1Pos+$Form1Pos,$Form1Pos)
;WinMove ( "窗口标题", "窗口文本", X坐标, Y坐标 [, 宽度 [, 高度[,速度]]] )
GUISetState(@SW_SHOW,$Form2)
Else
GUISetState(@SW_HIDE,$Form2)
EndIf
EndFunc
Func Quit()
Exit
EndFunc 显示了,但是位置不对吧
GUICtrlCreateGroup("可选软件安装",1,106,165,150)
试试这个 回复 3# 3mile
谢谢,OK了.
但是阁下的坐标值是如何计算的呢?
对于$Form2Pos+1,$Form2Pos+102我是这了理解的:
$Form2Pos是$Form2的X坐标,那么加1当Group2的X坐标可以啊?
$Form2Pos是$Form2的Y坐标,那么加上第一个Group的高度在多一点也是可以做Group2的Y ?
但是怎么都出界了呢?
而阁下的$Form2Pos-118里的118是怎么计算的呢? 回复 5# newuser
;WINGETPOS()获得的座标是相对于屏幕的座标。
;指定GROUP座标相对于GUI的座标。假定窗口Y轴为0,则$Form2Pos-($Form2Pos-100)为需要的座标。此100为GROUP1的高度。 回复 6# 3mile
很难在头脑中有个立体感觉,当个公式记住吧!
谢谢您的回答! 沾光学习。
页:
[1]