找回密码
 加入
搜索
查看: 3043|回复: 9

[AU3基础] 请教如何禁止点击主界面?

  [复制链接]
发表于 2014-3-28 20:08:00 | 显示全部楼层 |阅读模式
本帖最后由 smooth 于 2014-3-28 20:09 编辑

程序执行时会弹出来一个小的界面,弹出来后我想禁止点击主界面,类似于MSGBOX加了主界面的句柄的那种效果,等这个小的界面消失之后才恢复主界面。不知道可否实现?

本帖子中包含更多资源

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

×
发表于 2014-3-28 21:08:22 | 显示全部楼层
本帖最后由 水木子 于 2014-3-28 21:10 编辑

可以实现啊!简单的父子窗,就可以搞定了。
Opt('GUIOnEventMode', 1)

$MyGui1 = GUICreate('父窗口', 300, 280)
GUISetOnEvent(-3, '_GuiMsg')
$Btnton1_1 = GUICtrlCreateButton('显示子窗口', 100, 110, 100, 30)
GUICtrlSetOnEvent(-1, '_GuiMsg')
GUISetState()

$MyGui2 = GUICreate('子窗口', 200, 100)
GUISetOnEvent(-3, '_GuiMsg')
$Btnton2_1 = GUICtrlCreateButton('显示', 50, 30, 100, 30)
GUICtrlSetOnEvent(-1, '_GuiMsg')

While 1
        Sleep(250)
WEnd

Func _GuiMsg()
        Switch @GUI_CtrlId
                Case -3
                        Switch @GUI_WinHandle
                                Case $MyGui1
                                        Exit
                                Case $MyGui2
                                        GUISetState(@SW_ENABLE, $MyGui1)
                                        GUISetState(@SW_HIDE, $MyGui2)
                        EndSwitch
                Case $Btnton1_1
                        GUISetState(@SW_SHOW, $MyGui2)
                        GUISetState(@SW_DISABLE, $MyGui1)
                Case $Btnton2_1
                        MsgBox(64, '测试', '我是子窗口')
        EndSwitch
EndFunc   ;==>_GuiMsg
发表于 2014-3-28 22:17:06 | 显示全部楼层
简单的解决方法,弹出子窗体时,把父窗体的属性设置为@SW_DISABLE,子窗体结束时再恢复。
发表于 2014-3-29 08:12:51 | 显示全部楼层
可以实现啊!简单的父子窗,就可以搞定了。
水木子 发表于 2014-3-28 21:08


水版的事件模式,另人惊叹
个人习惯,事件模式了就用不同的函数,用同一函数的话就窗口模式吧
 楼主| 发表于 2014-3-29 08:16:38 | 显示全部楼层
水版的写的模式,我还是第一次看到,看得有点晕。
 楼主| 发表于 2014-3-29 08:55:07 | 显示全部楼层
本帖最后由 smooth 于 2014-3-29 09:03 编辑

回复 3# skyfree

按照S大说的,实现起来很简单,多谢了。水版的方法也非常好,值得深入研究。

$Form_M = GUICreate("", 280, 100, -1, -1, -1, -1, $Form1)

GUISetState(@SW_SHOW)
GUISetState(@SW_DISABLE, $Form1)
发表于 2014-3-29 11:34:04 | 显示全部楼层
本帖最后由 水木子 于 2014-3-29 11:36 编辑

回复 4# seniors

回复 5# smooth
不用事件模式也行,其实道理都差不多。
这算是比较简单的父子窗练习,没什么深奥的东西。
Global $iGuiState = 0

$MyGui1 = GUICreate('父窗口', 300, 280)
$Btnton1_1 = GUICtrlCreateButton('显示子窗口', 100, 110, 100, 30)
GUISetState()

$MyGui2 = GUICreate('子窗口', 200, 100)
$Btnton2_1 = GUICtrlCreateButton('显示', 50, 30, 100, 30)

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case -3
                        If $iGuiState = 0 Then
                                Exit
                        Else
                                GUISetState(@SW_ENABLE, $MyGui1)
                                GUISetState(@SW_HIDE, $MyGui2)
                                $iGuiState = 0
                        EndIf                
                Case $Btnton1_1
                        GUISetState(@SW_SHOW, $MyGui2)
                        GUISetState(@SW_DISABLE, $MyGui1)
                        $iGuiState = 1
                Case $Btnton2_1
                        MsgBox(64, '测试', '我是子窗口')
        EndSwitch
WEnd
 楼主| 发表于 2014-3-29 12:51:19 | 显示全部楼层
本帖最后由 smooth 于 2014-3-29 12:55 编辑

回复 7# 水木子

这个更好理解,因为我没有研究过事件模式。不知道在创建窗口的时候,添加另外一个窗口的句柄,这样做有什么效果?直接看好像看不出来。谢谢!
发表于 2014-3-30 17:20:49 | 显示全部楼层
模态窗口更好..
发表于 2014-3-31 11:25:01 | 显示全部楼层
有用,收藏一下
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-17 00:20 , Processed in 0.092746 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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