找回密码
 加入
搜索
查看: 3737|回复: 7

[AU3基础] [已解决]请教,为何主窗移动后,其所属子窗消失?谢谢!!!

  [复制链接]
发表于 2011-5-12 14:34:13 | 显示全部楼层 |阅读模式
本帖最后由 131738 于 2011-5-12 15:19 编辑

感谢超版 pcbar  帮助解决问题,谢谢 pcbar !!!

同时也谢谢 3mile !!!!!!



如题,问题描述在下面截图和代码中:
#include <WindowsConstants.au3>

Global $ABCD = 0

Global $hMain_GUI = GUICreate("主窗", 440, 343, -1, -1);创建主窗
GUISetBkColor(0xDCE6E8)

Global $button0 = GUICtrlCreateButton("切换", 20, 310, 80, 30)

Global $hSon_GUI_1 = GUICreate("子窗1", 250, 250, 173, 54, $WS_CLIPCHILDREN + $WS_CHILD, -1, $hMain_GUI)
GUISetBkColor(0xFFFF00)
GUICtrlCreateLabel("子窗1-黄色" & @CRLF & @CRLF _
                 & "点击主窗左下角[切换]按钮," & @CRLF & @CRLF _
                 & "注:首次点击按钮需2次点击!" & @CRLF & @CRLF _
                 & "隐藏子窗1,显示子窗2" & @CRLF & @CRLF _
                 & "脚本运行后,不移动窗口的情况下," & @CRLF & @CRLF _
                 & "切换操作正常!!!" & @CRLF & @CRLF _
                 & "一旦移动窗口后,仍可切换子窗," & @CRLF & @CRLF _
                 & "但子窗1消失,只有子窗2可以显示" & @CRLF & @CRLF _
                 & "请高手帮忙分析,修改这个BUG,谢谢!!!", 20, 20, 200, 205)

;注释下面2句,不创建子窗2,则操作一切正常,无论怎样移动主窗,子窗1也不会消失。。。
Global $hSon_GUI_2 = GUICreate("子窗2", 440, 300, 0, 0, $WS_POPUP, $WS_EX_MDICHILD, $hMain_GUI)
GUISetBkColor(0x0000FF)

GUISetState(@SW_SHOW, $hMain_GUI);显示主窗口
GUISetState(@SW_SHOW, $hSon_GUI_1);显示子窗1

While 1
        Switch GUIGetMsg()
                Case -3
                        Exit
                Case $button0
                        ABCD()
        EndSwitch
WEnd

Func ABCD()
        If $ABCD = 0 Then
                GUISetState(@SW_SHOW, $hSon_GUI_1) ;显示子窗口1
                GUISetState(@SW_HIDE, $hSon_GUI_2) ;隐藏子窗口2
                $ABCD = 1
        ElseIf $ABCD = 1 Then
                GUISetState(@SW_HIDE, $hSon_GUI_1) ;隐藏子窗口1
                GUISetState(@SW_SHOW, $hSon_GUI_2) ;显示子窗口2
                $ABCD = 0
        EndIf
EndFunc   ;==>ABCD
只要不创建子窗2,则操作一切正常,无论怎样移动主窗,子窗1也不会消失。。。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2011-5-12 14:56:02 | 显示全部楼层
#include <WindowsConstants.au3>
Global $ABCD
Global $hMain_GUI = GUICreate("主窗", 440, 343, -1, -1);创建主窗
GUISetBkColor(0xDCE6E8)

Global $button0 = GUICtrlCreateButton("切换", 20, 310, 80, 30)

Global $hSon_GUI_1 = GUICreate("子窗1", 250, 250, 173, 54, $WS_POPUP, $WS_EX_MDICHILD, $hMain_GUI)
GUISetBkColor(0xFFFF00)
GUICtrlCreateLabel("子窗1-黄色" & @CRLF & @CRLF _
                 & "点击主窗左下角[切换]按钮," & @CRLF & @CRLF _
                 & "注:首次点击按钮需2次点击!" & @CRLF & @CRLF _
                 & "隐藏子窗1,显示子窗2" & @CRLF & @CRLF _
                 & "脚本运行后,不移动窗口的情况下," & @CRLF & @CRLF _
                 & "切换操作正常!!!" & @CRLF & @CRLF _
                 & "一旦移动窗口后,仍可切换子窗," & @CRLF & @CRLF _
                 & "但子窗1消失,只有子窗2可以显示" & @CRLF & @CRLF _
                 & "请高手帮忙分析,修改这个BUG,谢谢!!!", 20, 20, 200, 205)

Global $hSon_GUI_2 = GUICreate("子窗2", 440, 300, 0, 0, $WS_POPUP, $WS_EX_MDICHILD, $hMain_GUI)
GUISetBkColor(0x0000FF)

GUISetState(@SW_SHOW, $hMain_GUI);显示主窗口
GUISetState(@SW_SHOW, $hSon_GUI_1);显示子窗1

While 1
        Switch GUIGetMsg()
                Case -3
                        Exit
                Case $button0
                        ABCD()
        EndSwitch
WEnd

Func ABCD();转换到"软件卸载"时,隐藏类按钮组件
        If $ABCD Then
                GUISetState(@SW_HIDE, $hSon_GUI_2) ;隐藏 程序卸载 窗口
                GUISetState(@SW_SHOW, $hSon_GUI_1) ;显示 软件列表 窗口
        Else
                GUISetState(@SW_HIDE, $hSon_GUI_1) ;隐藏 软件列表 窗口
                GUISetState(@SW_SHOW, $hSon_GUI_2) ;显示 程序卸载
        EndIf
        $ABCD = Not $ABCD
EndFunc   ;==>ABCD
窗口样式问题
顺便解决你切换2次的问题

不建议这种方式
 楼主| 发表于 2011-5-12 15:06:24 | 显示全部楼层
本帖最后由 131738 于 2011-5-12 15:07 编辑
窗口样式问题
顺便解决你切换2次的问题

不建议这种方式
pcbar 发表于 2011-5-12 14:56


谢谢,原来问题出在样式设置上。。。

之所以用这种形式,是因为脚本启动时,子窗1读取配置文件,子窗2搜索注册表,都有一定的时间延迟,

初始启动等待这2个子窗数据搜集完成后,再显示主界面!

谢谢帮助!!!
发表于 2011-5-12 15:15:20 | 显示全部楼层
#include <WindowsConstants.au3>
#Include <WinAPI.au3>

Global $ABCD = 0

Global $hMain_GUI = GUICreate("主窗", 440, 343, -1, -1);创建主窗
GUISetBkColor(0xDCE6E8)

Global $button0 = GUICtrlCreateButton("切换", 20, 310, 80, 30)

Global $hSon_GUI_1 = GUICreate("子窗1", 250, 250, 173, 54,BitOR($WS_POPUP, $WS_SYSMENU))
GUISetBkColor(0xFFFF00)
GUICtrlCreateLabel("子窗1-黄色" & @CRLF & @CRLF _
                 & "点击主窗左下角[切换]按钮," & @CRLF & @CRLF _
                 & "注:首次点击按钮需2次点击!" & @CRLF & @CRLF _
                 & "隐藏子窗1,显示子窗2" & @CRLF & @CRLF _
                 & "脚本运行后,不移动窗口的情况下," & @CRLF & @CRLF _
                 & "切换操作正常!!!" & @CRLF & @CRLF _
                 & "一旦移动窗口后,仍可切换子窗," & @CRLF & @CRLF _
                 & "但子窗1消失,只有子窗2可以显示" & @CRLF & @CRLF _
                 & "请高手帮忙分析,修改这个BUG,谢谢!!!", 20, 20, 200, 205)
_WinAPI_SetParent($hSon_GUI_1, $hMain_GUI)
Global $hSon_GUI_2 = GUICreate("子窗2", 440, 300, 0, 0, $WS_POPUP, $WS_EX_MDICHILD, $hMain_GUI)
GUISetBkColor(0x0000FF)

GUISetState(@SW_SHOW, $hMain_GUI);显示主窗口
GUISetState(@SW_SHOW, $hSon_GUI_1);显示子窗1

While 1
        Switch GUIGetMsg()
                Case -3
                        Exit
                Case $button0
                        ABCD()
        EndSwitch
WEnd

Func ABCD();转换到"软件卸载"时,隐藏类按钮组件
        If $ABCD = 0 Then
                GUISetState(@SW_SHOW, $hSon_GUI_1) ;显示 软件列表 窗口
                GUISetState(@SW_HIDE, $hSon_GUI_2) ;隐藏 程序卸载 窗口
                $ABCD = 1
        ElseIf $ABCD = 1 Then
                GUISetState(@SW_HIDE, $hSon_GUI_1) ;隐藏 软件列表 窗口
                GUISetState(@SW_SHOW, $hSon_GUI_2) ;显示 程序卸载 窗口
                $ABCD = 0
        EndIf
EndFunc   ;==>ABCD
发表于 2011-5-12 15:16:26 | 显示全部楼层
没看到PCBAR前辈已经回复了.
SORRY
 楼主| 发表于 2011-5-12 15:16:45 | 显示全部楼层
回复 4# 3mile

谢谢!!!!
 楼主| 发表于 2011-5-12 15:22:48 | 显示全部楼层
没看到PCBAR前辈已经回复了.
SORRY
3mile 发表于 2011-5-12 15:16


对于帮助意见,多多宜善,谢谢!!!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-28 14:14 , Processed in 0.080826 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表