白隼 发表于 2014-4-13 12:21:58

请教激活并且移动多个同名窗口


像上面三个窗口,如何能在这三个窗口来回切换
比如:先激活1号窗口,把它移动到0,0坐标
然后激活2号窗口,把它移动到100,100坐标
然后激活3号窗口,把它移动到200,200坐标

帮助里面有这个GUISwitch ( 窗口句柄 [,标签项目ID] )
切换使用 GUI 函数的"当前"窗口.
这个已经试了,无效。

lanfengc 发表于 2014-4-13 13:55:02

回复 1# 白隼


   
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
$Form1 = GUICreate("我的窗口", 221, 312, 192, 114)
$Label1 = GUICtrlCreateLabel("我的窗口", 32, 80, 52, 17)
$Form2 = GUICreate("我的窗口", 221, 312, 192, 114)
$Label2 = GUICtrlCreateLabel("我的窗口", 32, 80, 52, 17)
$Form3 = GUICreate("我的窗口", 221, 312, 192, 114)
$Label3 = GUICtrlCreateLabel("我的窗口", 32, 80, 52, 17)
GUISetState(@SW_SHOW,$Form1)
GUISetState(@SW_SHOW,$Form2)
GUISetState(@SW_SHOW,$Form3)

MsgBox(0,"提示","点击确定开始移动窗口!")
MoveWindow("我的窗口")

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

Func MoveWindow($_title="")
        Local $winlist=WinList($_title)
        If $winlist>0 Then
                For $i= 1To$winlist
                        WinMove( $winlist[$i] ,"",Random(1,@DesktopWidth,1),Random(1,@DesktopHeight,1))
                Next
        EndIf
EndFunc

afan 发表于 2014-4-13 14:09:08

WinActivate(窗口句柄)
WinMove(窗口句柄, '', x坐标, Y坐标)

skyfree 发表于 2014-4-13 17:41:28

本帖最后由 skyfree 于 2014-4-13 17:43 编辑

由于楼主没发代码,所以我也只能做个简单例子。并不是完全按你的需求做,但可实现你的要求,你稍加更改就可以了。其实你只要明白,WinMove不一定需要的是标题名,使用窗体ID是一样的。而且如果只是单纯移动的话不需要先激活窗体。
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

$Form1 = GUICreate("我的窗口", 221, 312, 192, 114)
$Label1 = GUICtrlCreateLabel("我的窗口", 32, 80, 52, 17)
$Form2 = GUICreate("我的窗口", 221, 312, 192 + 300, 114)
$Label2 = GUICtrlCreateLabel("我的窗口", 32, 80, 52, 17)
$Form3 = GUICreate("我的窗口", 221, 312, 192 + 600, 114)
$Label3 = GUICtrlCreateLabel("我的窗口", 32, 80, 52, 17)
GUISetState(@SW_SHOW, $Form1)
GUISetState(@SW_SHOW, $Form2)
GUISetState(@SW_SHOW, $Form3)

Sleep(1000)
_FormMove()
Sleep(2000)
Exit

Func _FormMove()
        WinMove($Form1, "", 192 + 100, 214 + 100)
        WinMove($Form2, "", 192 + 300 + 100, 214 + 100)
        WinMove($Form3, "", 192 + 600 + 100, 214 + 100)
EndFunc   ;==>_FormMove
页: [1]
查看完整版本: 请教激活并且移动多个同名窗口