awfymwvf 发表于 2010-5-19 10:02:24

[已解决]求助,我如何让两个窗体的位置贴上?

本帖最后由 awfymwvf 于 2010-5-19 14:07 编辑

如下图



我想点击安装这个按钮,弹出的第二个窗体排在第一个窗体的右边,紧贴着。怎么能实现呢。

我的代码#include <GUIConstants.au3>
#include <WindowsConstants.au3>

dim $Form2,$Form1,$check4

Opt("GUIOnEventMode", 1)
OnAutoItExitRegister("Quit")

$Form2=GUICreate("安装选项",170,273,-1,-1)

$Form1=GUICreate ( "我的第一个窗口", 484, 273,-1,-1,BitOR($WS_SYSMENU,$WS_CAPTION,$WS_POPUP,$WS_POPUPWINDOW,$WS_BORDER,$WS_CLIPSIBLINGS))
GUISetOnEvent($GUI_EVENT_CLOSE, "quit")
GUISetState (@SW_SHOW,$Form1)

$check4=GUICtrlCreateCheckbox("安装", 20,235,50,25)
GUICtrlSetOnEvent($check4, "check4")

While 1
Sleep(1000)
WEnd

Func check4()
        GUISetState(@SW_SHOW,$Form2)
EndFunc

Func Quit()
    GUISetState(@SW_HIDE)
    Exit
EndFunc

lanfengc 发表于 2010-5-19 11:33:54

简单。 看我的代码。#include <GUIConstants.au3>
#include <WindowsConstants.au3>

dim $Form2,$Form1,$check4

Opt("GUIOnEventMode", 1)
OnAutoItExitRegister("Quit")

$Form2=GUICreate("安装选项",170,273,-1,-1)
$Form1=GUICreate ( "我的第一个窗口", 484, 273,-1,-1,BitOR($WS_SYSMENU,$WS_CAPTION,$WS_POPUP,$WS_POPUPWINDOW,$WS_BORDER,$WS_CLIPSIBLINGS))
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)
        If GUICtrlRead($check4)=$GUI_CHECKED Then
                WinMove($Form2,"",$Form1Pos+$Form1Pos,$Form1Pos)
                GUISetState(@SW_SHOW,$Form2)
        Else
                GUISetState(@SW_HIDE,$Form2)
        EndIf
EndFunc

Func Quit()
    Exit
EndFunc

awfymwvf 发表于 2010-5-19 14:06:35

谢谢楼上兄弟的回复。问题已解决

newuser 发表于 2010-5-19 17:28:32

回复 3# awfymwvf
有答案更要有注释,方便后来的人阅读并读懂它!#include <GUIConstants.au3>
#include <WindowsConstants.au3>

Opt("GUIOnEventMode", 1)
OnAutoItExitRegister("Quit")

$Form2=GUICreate("安装选项",170,273,-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

晓寒歌 发表于 2010-5-20 09:40:29

完全看不懂。。汗死。。AU3好像很强大啊。。
页: [1]
查看完整版本: [已解决]求助,我如何让两个窗体的位置贴上?