itljl 发表于 2008-7-5 01:30:01

如何在访问子窗口的时候,禁止访问母窗口?

以下代码是用演示子窗口切换。请教如何在访问子窗口的时候,子窗口相对于母窗口是最顶层,也就是访问子窗口时母窗口始终在其之下,无法被点击,控件无法使用。谢谢 。

#include <GUIConstants.au3>

$parent1= GUICreate("Parent1")
$showp2 = GUICtrlCreateButton("显示2",10,10)
$parent2= GUICreate("Parent2",200,100)
$hidep2 = GUICtrlCreateButton("隐藏2",10,10)
GUISwitch($parent1)
GUISetState()
While 1
$msg = GUIGetMsg(1)
Select
Case $msg = $GUI_EVENT_CLOSE And $msg = $parent1
Exit
Case $msg = $GUI_EVENT_CLOSE And $msg = $parent2
GUISetState(@SW_HIDE ,$parent2)
Case $msg = $showp2
GUISetState(@SW_SHOW ,$parent2)
Case $msg = $hidep2
GUISetState(@SW_HIDE ,$parent2)
EndSelect

WEnd:face (35):

[ 本帖最后由 itljl 于 2008-7-6 21:27 编辑 ]

pcbar 发表于 2008-7-5 08:17:30

#include <GUIConstants.au3>

$parent1 = GUICreate("Parent1")
$showp2 = GUICtrlCreateButton("显示2", 10, 10)
$parent2 = GUICreate("Parent2", 200, 100)
$hidep2 = GUICtrlCreateButton("隐藏2", 10, 10)
GUISwitch($parent1)
GUISetState()
While 1
        $msg = GUIGetMsg(1)
        Select
                Case $msg = $GUI_EVENT_CLOSE And $msg = $parent1
                        Exit
                Case $msg = $GUI_EVENT_CLOSE And $msg = $parent2
                        GUISetState(@SW_HIDE, $parent2)
                        GUISetState(@SW_ENABLE,$parent1)
                                WinActivate("Parent1")
                Case $msg = $showp2
                        GUISetState(@SW_SHOW, $parent2)
                        GUISetState(@SW_DISABLE,$parent1)
                Case $msg = $hidep2
                        GUISetState(@SW_HIDE, $parent2)
                        GUISetState(@SW_ENABLE,$parent1)
                        WinActivate("Parent1")
        EndSelect

WEnd

itljl 发表于 2008-7-6 21:27:16

谢谢周哥。

jack2018 发表于 2013-1-20 22:08:58

回复 2# pcbar
不错,是我想要的

huangke 发表于 2013-1-23 15:29:13

设置子窗体最前可以不?

macran 发表于 2015-4-19 23:00:15

这根本不是父子窗口,看看每个软件的关于对话框。那才叫子窗口。最重要的区别是,不可以单独显示子窗口。
页: [1]
查看完整版本: 如何在访问子窗口的时候,禁止访问母窗口?