[已解决]请教,为何主窗移动后,其所属子窗消失?谢谢!!!
本帖最后由 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也不会消失。。。 #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次的问题
不建议这种方式 本帖最后由 131738 于 2011-5-12 15:07 编辑
窗口样式问题
顺便解决你切换2次的问题
不建议这种方式
pcbar 发表于 2011-5-12 14:56 http://autoitx.com/images/common/back.gif
谢谢,原来问题出在样式设置上。。。
之所以用这种形式,是因为脚本启动时,子窗1读取配置文件,子窗2搜索注册表,都有一定的时间延迟,
初始启动等待这2个子窗数据搜集完成后,再显示主界面!
谢谢帮助!!! #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 没看到PCBAR前辈已经回复了.
SORRY 回复 4# 3mile
谢谢!!!! 没看到PCBAR前辈已经回复了.
SORRY
3mile 发表于 2011-5-12 15:16 http://autoitx.com/images/common/back.gif
对于帮助意见,多多宜善,谢谢!!!
页:
[1]