bdancerlc 发表于 2011-12-25 20:02:31

窗口跟随例子报错,大家帮我试试![已解决]

本帖最后由 bdancerlc 于 2011-12-25 21:16 编辑

原帖:http://www.autoitx.com/forum.php?mod=viewthread&tid=20581&highlight=%B8%FA%CB%E6
错误提示:

错误: $WM_MOVING 上一次定义为一个 'Const' 变量..
Global Const $WM_MOVING = 0x216


#include <StructureConstants.au3>
#include <WindowsConstants.au3>
Global Const $WM_MOVING = 0x216
Global $from2_s = False
$From1 = GUICreate('移动我', 300, 300, 300, 300)
$pos1 = WinGetPos($From1)
GUIRegisterMsg($WM_MOVING, 'WM_MOVING')
GUIRegisterMsg(0x3, "WM_MOVE")
GUISetState()
$From2 = GUICreate('', 300, 300, 600, 300, -1, -1, $From1)
GUISetState()
$from1_pos = WinGetPos($From1)
Do
Until GUIGetMsg() = -3
Func WM_MOVING($hWnd, $iMsg, $iwParam, $ilParam)
        GUIRegisterMsg(0x3, "")
        If $hWnd = $From1 And $from2_s = False Then
                $tBuffer = DllStructCreate($tagRECT, $ilParam) ;$tagRECT结构,包含左、顶、右、底坐标
                $iLeft = DllStructGetData($tBuffer, "Left")
                $iTop = DllStructGetData($tBuffer, "Top")

                WinMove($From2, "", $iLeft + $from1_pos, $iTop)
                WinMove($From1, "", $iLeft, $iTop)
                Return
        Else
                $from2_s = True
        EndIf
        If $hWnd = $From2 Then
                $tBuffer = DllStructCreate($tagRECT, $ilParam) ;$tagRECT结构,包含左、顶、右、底坐标
                $iLeft = DllStructGetData($tBuffer, "Left")
                $iTop = DllStructGetData($tBuffer, "Top")
                $from1_pos = WinGetPos($From1)
                $x = $from1_pos + $from1_pos - $iLeft
                $y = $from1_pos - $iTop
                If Abs($x) < 30 And Abs($y) < 30 Then WinMove($From2, "", $from1_pos + $from1_pos, $from1_pos)
        EndIf
        GUIRegisterMsg(0x3, "WM_MOVE")
EndFunc   ;==>WM_MOVING
Func WM_MOVE()
        $from1_pos = WinGetPos($From1)
        $from2_pos = WinGetPos($From2)
        $x = $from1_pos + $from1_pos - $from2_pos
        $y = $from1_pos - $from2_pos
        If Abs($x) < 30 And Abs($y) < 30 Then
                WinMove($From2, "", $from1_pos + $from1_pos, $from1_pos)
                $from2_s = False
        EndIf
EndFunc   ;==>WM_MOVE

afan 发表于 2011-12-25 20:39:36

将一二行调换下位置试试~

bdancerlc 发表于 2011-12-25 20:53:36

回复 2# afan


    还是提示一样的错误:

错误: $WM_MOVING 上一次定义为一个 'Const' 变量..
Global Const $WM_MOVING = 0x216

afan 发表于 2011-12-25 20:54:52

回复afan


    还是提示一样的错误:
bdancerlc 发表于 2011-12-25 20:53 http://www.autoitx.com/images/common/back.gif

如果是这个原因,注释掉第3行~

bdancerlc 发表于 2011-12-25 21:16:24

回复 4# afan


    谢谢,确实注释了第三行就可以运行了,这个吸附跟随效果中,移动窗口有重影...
    哎...不知道a版有没有更好的办法?...
    我先 修改标题...[已解决]
    不纠结于这段代码了...

afan 发表于 2011-12-25 21:19:49

回复afan


    ...移动窗口有重影...
   ...
bdancerlc 发表于 2011-12-25 21:16 http://www.autoitx.com/images/common/back.gif


    我试了下,没发现什么重影…

bdancerlc 发表于 2011-12-25 21:21:56

回复 6# afan


    .....



悲剧,又只有我这边有这问题?
......

afan 发表于 2011-12-25 21:22:43

回复afan


    .....



悲剧,又只有我这边有这问题?
......
bdancerlc 发表于 2011-12-25 21:21 http://www.autoitx.com/images/common/back.gif


    又是你改系统惹的~

bdancerlc 发表于 2011-12-25 21:25:53

回复 8# afan

我晕,我是真没 修改系统啊,被A版一说,我这跳进黄河也洗不清了!
{:face (62):}
话说是不是机子要清理灰尘了,我好像有1年多没清理了...

afan 发表于 2011-12-25 21:30:53

回复afan

我晕,我是真没 修改系统啊,被A版一说,我这跳进黄河也洗不清了!

话说 ...
bdancerlc 发表于 2011-12-25 21:25 http://www.autoitx.com/images/common/back.gif


    那是我记错人了…… 呵呵

bdancerlc 发表于 2011-12-25 21:39:32

回复 10# afan


    上次你也说我 DIY 系统来着, 应该说的是我..
    我现在不想折腾系统了,那玩意需要很好的认识系统比较全面的知识才能玩好!
    我一直对DIY 软件比较有兴趣,比如给某个软件整个插件什么的,丰富软件功能...
    不知道用AU3有没有比较好的方式来做插件..
    当然,通过模拟点击之类的可以简单的实现,但是感觉这样有点不正规,而且出错的几率也比较大...

afan 发表于 2011-12-25 21:41:50

回复afan


    上次你也说我 DIY 系统来着, 应该说的是我..
    我现在不想折腾系统了,那玩意需要 ...
bdancerlc 发表于 2011-12-25 21:39 http://www.autoitx.com/images/common/back.gif


    还是你强,你都会做插件~
我只会把别的软件拿来做我的插件。。。

bdancerlc 发表于 2011-12-25 21:48:46

回复 12# afan


    a版就别谦虚了,我是想做,还没摸清楚方法呢!...
    哎...只能慢慢摸索了..
    {:face (203):}

gzh888666 发表于 2011-12-25 21:54:35

?我这里一切正常!既无错误提示,又无重影!

netegg 发表于 2011-12-26 08:38:55

回复 12# afan

{:1_521:}都这么强,我只会把插件揪出来删掉
页: [1]
查看完整版本: 窗口跟随例子报错,大家帮我试试![已解决]