找回密码
 加入
搜索
查看: 7276|回复: 23

[已解决]GUI上面如何内嵌一个滚动公告

[复制链接]
发表于 2009-3-14 18:56:09 | 显示全部楼层 |阅读模式
如题,在论坛上看到有一个滚动公告,做得很不错,不知道有没有方法让它内嵌到GUI里面去?我试了多久一直不行!刚学AU3,见着什么都想去试下,每天撑握点!另就是send怎么不能往记事本输入中文字符,输进去要乱码!奇怪

[ 本帖最后由 jycel 于 2009-3-15 12:38 编辑 ]
发表于 2009-3-14 19:08:05 | 显示全部楼层
如何内嵌 ,提问都不清楚 另外 send 是不支持中文的
发表于 2009-3-14 19:28:34 | 显示全部楼层
#include <ACN_String.au3>

SendX("支持中文",0)
发表于 2009-3-14 19:33:19 | 显示全部楼层
3L的ACN_String.au3是哪里的啊?
发表于 2009-3-14 20:53:56 | 显示全部楼层
Run("notepad.exe")
WinWaitActive("无标题 - ")
$Text = "中文 :请多关照" & @CR
$Text &= "繁體 :請多關照 " & @LF
$Text &= "日文 :よろしくお願いします " & @CR
$Text &= "特殊符号: ♂☆⊙①ⅠΘ┆" & @LF
$Text &= "@CRLF 会换行2次" & @CRLF
$Text &= "End"

SendC($Text)

Func SendC($Str, $Flag = 0)
        If $Flag Then
                Local $Clip = ClipGet()
                ClipPut($Str)
                Send('+{ins}')
                ClipPut($Clip)
        Else
                Local $Nul = Chr(0)
                For $i = 1 To StringLen($Str)
                        Send('{ASC ' & StringToBinary(StringMid($Str, $i, 1) & $Nul) & '}')
                Next
        EndIf
EndFunc   ;==>SendC
 楼主| 发表于 2009-3-14 20:55:09 | 显示全部楼层
原帖由 lxz 于 2009-3-14 19:28 发表
#include

SendX("支持中文",0)

sendX我在那儿也看到过这函数,但用不了!
 楼主| 发表于 2009-3-14 20:57:06 | 显示全部楼层
原帖由 xrbenbeba 于 2009-3-14 20:53 发表
Run("notepad.exe")
WinWaitActive("无标题 - ")
$Text = "中文 :请多关照" & @CR
$Text &= "繁體 :請多關照 " & @LF
$Text &= "日文 :よろしくお願いします " & @CR
$Text &= "特殊符号: ♂☆⊙①ⅠΘ┆"  ...

学习了!刚试了下!非常好!不知道关于GUI内嵌滚动公告有法实现吗?

[ 本帖最后由 jycel 于 2009-3-14 21:00 编辑 ]
发表于 2009-3-14 21:12:06 | 显示全部楼层
具体的函数我就不说了 说下思路吧

建立一个标签控件 然后用一个计时器时时更新这个标签
更新的函数设置成每回取第一个字搁到最后或者用AU3的窗体函数移动控件,这样给人的感觉就是滚动的了.
 楼主| 发表于 2009-3-14 22:15:08 | 显示全部楼层
现在还不怎么懂,我去多试下看!原滚公告代码意思也差不多这样!
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
;#NoTrayIcon ;隐藏程序在系统托盘上的图标
$title = "";设置需要显示公告的激活窗口的窗口名
$neirong1 = "系统公告:";定义neirong1为公告内容1
$neirong2 = "欢迎来到本网吧!";定义neirong2为公告内容2
WinActivate($title);激活需要显示公告的窗口
$size = WinGetPos($title);获取需要显示公告的窗口大小
;MsgBox(0, "活动窗口状态 (X坐标,Y坐标,宽度,高度):", $size[0] & ",        " & $size[1] & ",        " & $size[2] & ",        " & $size[3])
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("gonggao", $size[2] - 200, 19, 100, 100, $WS_VISIBLE + $WS_POPUP, $WS_EX_TOOLWINDOW)
;根据要显示公告的窗口宽度设置gui的宽度,并用$WS_EX_TOOLWINDOW样式来隐藏GUI界面在任务栏的图标
GUISetBkColor(0x9DB9EB);设置gui背景色
$Label1 = GUICtrlCreateLabel($neirong1 & $neirong2, 5, 5, 580, 15, $SS_CENTERIMAGE);需要移动的控件
GUICtrlSetColor(-1, 0xFF0000);文字颜色
GUISetState(@SW_SHOW);显示gui
WinSetTrans("gonggao", "", 150);定义gui透明度,介于 0 到 255 之间的数值.数值越大则窗口越不透明.
#EndRegion ### END Koda GUI section ###
WinSetOnTop("gonggao", "", 1);设置公告栏为顶层窗口
WinActivate($title);激活需要显示公告的窗口
_ReduceMemory(@AutoItPID);释放内存
$num = 0;这个数控制公告滚动的时间
$b = 1;这个数控制滚动的距离
While $num <= 2500
        If $b = 650 Then $b = 1
        Sleep(15);控制刷新速度
        If WinActive($title) = 1 Then
                ControlMove("gonggao", "", $Label1, 680 - $b, 0)
                $b += 1;检测指定窗口是否激活,如果激活则 b 函数自加
        Else
                WinSetState("gonggao", "", @SW_HIDE);指定窗口未激活时,隐藏公告栏
                WinWaitActive($title);等待指定窗口被激活
                WinSetState("gonggao", "", @SW_SHOW);指定窗口激活后,显示公告栏
        EndIf
        If $b=650 Then _ReduceMemory(@AutoItPID);释放内存
        $num = $num + 1
WEnd

;_ReduceMemory(@AutoItPID)
Func _ReduceMemory($i_PID = -1);内存释放函数
        If $i_PID <> -1 Then
                Local $ai_Handle = DllCall("kernel32.dll", 'int', 'OpenProcess', 'int', 0x1f0fff, 'int', False, 'int', $i_PID)
                Local $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', $ai_Handle[0])
                DllCall('kernel32.dll', 'int', 'CloseHandle', 'int', $ai_Handle[0])
        Else
                Local $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', -1)
        EndIf

        Return $ai_Return[0]
EndFunc   ;==>_ReduceMemory
发表于 2009-3-14 22:20:27 | 显示全部楼层
和我说的意思差不多

只是他做了一些循环判断
发表于 2009-3-14 22:46:41 | 显示全部楼层
LZ大概是想要这种吧~

#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
;#NoTrayIcon ;隐藏程序在系统托盘上的图标
$title = "gonggao";设置需要显示公告的激活窗口的窗口名
$neirong1 = "系统公告:";定义neirong1为公告内容1
$neirong2 = "欢迎来到本网吧!";定义neirong2为公告内容2
;WinActivate($title);激活需要显示公告的窗口
;$size = WinGetPos($title);获取需要显示公告的窗口大小
;MsgBox(0, "活动窗口状态 (X坐标,Y坐标,宽度,高度):", $size[0] & ",        " & $size[1] & ",        " & $size[2] & ",        " & $size[3])
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate($title, 700, 100, 100, 100)
;根据要显示公告的窗口宽度设置gui的宽度,并用$WS_EX_TOOLWINDOW样式来隐藏GUI界面在任务栏的图标
GUISetBkColor(0x9DB9EB);设置gui背景色
$Label1 = GUICtrlCreateLabel($neirong1 & $neirong2, 5, 5, 580, 15, $SS_CENTERIMAGE);需要移动的控件
GUICtrlSetColor(-1, 0xFF0000);文字颜色
GUISetState(@SW_SHOW);显示gui
;WinSetTrans("gonggao", "", 150);定义gui透明度,介于 0 到 255 之间的数值.数值越大则窗口越不透明.
#EndRegion ### END Koda GUI section ###
;WinSetOnTop("gonggao", "", 1);设置公告栏为顶层窗口
;WinActivate($title);激活需要显示公告的窗口
_ReduceMemory(@AutoItPID);释放内存
$num = 0;这个数控制公告滚动的时间,滚动时间等于$num的指乘以28行的Sleep时间
$b = 1;这个数控制滚动的距离
While $num <= 2500
        $msg=GUIGetMsg()
        If $msg = $GUI_EVENT_CLOSE Then ExitLoop
        If $b = 650 Then $b = 1
        Sleep(15);控制刷新速度
        ;If WinActive($title) = 1 Then
                ControlMove($title, "", $Label1, 680 - $b, 0)
                $b += 1;检测指定窗口是否激活,如果激活则 b 函数自加
        ;Else
        ;        WinSetState("$title", "", @SW_HIDE);指定窗口未激活时,隐藏公告栏
        ;        WinWaitActive($title);等待指定窗口被激活
        ;        WinSetState("gonggao", "", @SW_SHOW);指定窗口激活后,显示公告栏
        ;EndIf
        If $b=650 Then _ReduceMemory(@AutoItPID);释放内存
        $num = $num + 1
WEnd

;_ReduceMemory(@AutoItPID)
Func _ReduceMemory($i_PID = -1);内存释放函数
        If $i_PID <> -1 Then
                Local $ai_Handle = DllCall("kernel32.dll", 'int', 'OpenProcess', 'int', 0x1f0fff, 'int', False, 'int', $i_PID)
                Local $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', $ai_Handle[0])
                DllCall('kernel32.dll', 'int', 'CloseHandle', 'int', $ai_Handle[0])
        Else
                Local $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', -1)
        EndIf

        Return $ai_Return[0]
EndFunc   ;==>_ReduceMemory
 楼主| 发表于 2009-3-14 23:05:10 | 显示全部楼层
是这种,但是我一直没有把内嵌到GUI界面去,下面是GUIonevent模式的例子,那位高手帮我加上去看下
我试了几个小时一直不行,老分离成二个窗口
#include <GUIConstants.au3>
#include <ButtonConstants.au3>

Opt("GUIOneventMode",1)
Dim $Button[24]

$WinMain  = GUICreate("测试", 450, 300)            ;创建主窗口
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")             ;注册窗口关闭事件到函数_Exit
;GUICtrlCreateButton ( "文本", 左侧, 上方 [, 宽度 [, 高度 [, 样式 [, 扩展样式]]]] ) 
$Button[0]  = GUICtrlCreateButton("按键1", 0, 0, 110, 49,$BS_FLAT);显示子窗口 1
$Button[1]  = GUICtrlCreateButton("按键2", 113, 0, 110, 49,$BS_FLAT);显示子窗口 2
$Button[2]  = GUICtrlCreateButton("按键3", 226, 0, 110, 49,$BS_FLAT);显示子窗口 3
$Button[3]  = GUICtrlCreateButton("按键4", 339, 0, 110, 49,$BS_FLAT);显示子窗口 4
$Button[4]  = GUICtrlCreateButton("按键5", 0, 50, 110, 49,$BS_FLAT);显示子窗口 5
$Button[5]  = GUICtrlCreateButton("按键6", 113, 50, 110, 49,$BS_FLAT);显示子窗口 6
$Button[6]  = GUICtrlCreateButton("按键7", 226, 50, 110, 49,$BS_FLAT);显示子窗口 7
$Button[7]  = GUICtrlCreateButton("按键8", 339, 50, 110, 49,$BS_FLAT);显示子窗口 8
$WinSub1  = GUICreate("子窗口", 220, 60)                ;创建子窗口1
GUISetOnEvent($GUI_EVENT_CLOSE, "GUICtrlMsg")           ;注册窗口关闭事件到函数GUICtrlMsg
$Button[8] = GUICtrlCreateButton("确认", 0, 0, 100, 50,$BS_DEFPUSHBUTTON)
$Button[9]= GUICtrlCreateButton("取消", 110, 0, 100, 50,$BS_DEFPUSHBUTTON);创建子窗口中按钮二

$WinSub2  = GUICreate("子窗口", 220, 60)                ;创建子窗口2
GUISetOnEvent($GUI_EVENT_CLOSE, "GUICtrlMsg")           ;注册窗口关闭事件到函数GUICtrlMsg
$Button[10]= GUICtrlCreateButton("确认", 0, 0, 100, 50,$BS_DEFPUSHBUTTON)
$Button[11]= GUICtrlCreateButton("取消", 110, 0, 100, 50,$BS_DEFPUSHBUTTON);创建子窗口中按钮二

$WinSub3  = GUICreate("子窗口", 220, 60)                ;创建子窗口2
GUISetOnEvent($GUI_EVENT_CLOSE, "GUICtrlMsg")           ;注册窗口关闭事件到函数GUICtrlMsg
$Button[12] = GUICtrlCreateButton("确认", 0, 0, 100, 50,$BS_DEFPUSHBUTTON)
$Button[13] = GUICtrlCreateButton("取消", 110, 0, 100, 50,$BS_DEFPUSHBUTTON);创建子窗口中按钮二

$WinSub4  = GUICreate("子窗口", 220, 60)                ;创建子窗口2
GUISetOnEvent($GUI_EVENT_CLOSE, "GUICtrlMsg")           ;注册窗口关闭事件到函数GUICtrlMsg
$Button[14] = GUICtrlCreateButton("确认", 0, 0, 100, 50,$BS_DEFPUSHBUTTON)
$Button[15] = GUICtrlCreateButton("取消", 110, 0, 100, 50,$BS_DEFPUSHBUTTON);创建子窗口中按钮二

$WinSub5  = GUICreate("子窗口", 220, 60)                ;创建子窗口2
GUISetOnEvent($GUI_EVENT_CLOSE, "GUICtrlMsg")           ;注册窗口关闭事件到函数GUICtrlMsg
$Button[16] = GUICtrlCreateButton("确认", 0, 0, 100, 50,$BS_DEFPUSHBUTTON)
$Button[17] = GUICtrlCreateButton("取消", 110, 0, 100, 50,$BS_DEFPUSHBUTTON);创建子窗口中按钮二

$WinSub6  = GUICreate("子窗口", 220, 60)                ;创建子窗口2
GUISetOnEvent($GUI_EVENT_CLOSE, "GUICtrlMsg")           ;注册窗口关闭事件到函数GUICtrlMsg
$Button[18] = GUICtrlCreateButton("确认", 0, 0, 100, 50,$BS_DEFPUSHBUTTON)
$Button[19] = GUICtrlCreateButton("取消", 110, 0, 100, 50,$BS_DEFPUSHBUTTON);创建子窗口中按钮二

$WinSub7  = GUICreate("子窗口", 220, 60)                ;创建子窗口2
GUISetOnEvent($GUI_EVENT_CLOSE, "GUICtrlMsg")           ;注册窗口关闭事件到函数GUICtrlMsg
$Button[20] = GUICtrlCreateButton("确认", 0, 0, 100, 50,$BS_DEFPUSHBUTTON)
$Button[21] = GUICtrlCreateButton("取消", 110, 0, 100, 50,$BS_DEFPUSHBUTTON);创建子窗口中按钮二

$WinSub8  = GUICreate("子窗口", 220, 60)                ;创建子窗口2
GUISetOnEvent($GUI_EVENT_CLOSE, "GUICtrlMsg")           ;注册窗口关闭事件到函数GUICtrlMsg
$Button[22] = GUICtrlCreateButton("确认", 0, 0, 100, 50,$BS_DEFPUSHBUTTON)
$Button[23] = GUICtrlCreateButton("取消", 110, 0, 100, 50,$BS_DEFPUSHBUTTON);创建子窗口中按钮二

For $I = 22 to 0 Step -1
        GUICtrlSetOnEvent($Button[$I],"GUICtrlMsg") ;注册总共的六个按钮点击事件到函数 GUICtrlMsg
                                                    ;请区分 GUISetOnEvent 和 GUICtrlSetOnEvent的区别
Next

GUISwitch($WinMain)                            ;切换当前窗口到主窗口
GUISetState(@SW_SHOW)                          ;显示当前窗口

While 1
        Sleep(1000)
WEnd

Func GUICtrlMsg()
        Switch @GUI_CtrlId;选择事件 ID 或 控件 ID
                Case $GUI_EVENT_CLOSE;如果点下的是$GUI_EVENT_CLOSE(关闭)
                        GUISetState(@SW_HIDE,@GUI_WinHandle);  隐藏产生事件的窗口
                Case $Button[0]
                        GUISetState(@SW_SHOW,$WinSub1);  显示 子窗口 1
                                Case $Button[1]
                        GUISetState(@SW_HIDE,$WinSub1);  隐藏 子窗口 2
                Case $Button[2]
                        GUISetState(@SW_SHOW,$WinSub2);  显示 子窗口 2
                Case $Button[3]
                        GUISetState(@SW_SHOW,$WinSub3);  显示 子窗口 3
                Case $Button[4]
                        GUISetState(@SW_SHOW,$WinSub4);  显示 子窗口 4                                                
                Case $Button[5]
                        GUISetState(@SW_SHOW,$WinSub5);  显示 子窗口 5
                Case $Button[6]
                        GUISetState(@SW_SHOW,$WinSub6);  显示 子窗口 6
                Case $Button[7]
                        GUISetState(@SW_SHOW,$WinSub7);  显示 子窗口 7
                Case $Button[8]
                        GUISetState(@SW_SHOW,$WinSub8);  显示 子窗口 8
                Case $Button[8]
                        MsgBox(48,0,"你点了主窗口 1 中的第一个按钮")
                        GUISetState(@SW_HIDE,$WinSub2);  隐藏 子窗口 2
                Case $Button[3]
                        MsgBox(48,0,"你点了主窗口 2 中的第一个按钮")
                Case $Button[4]
                        GUISetState(@SW_HIDE,$WinSub2);  隐藏 子窗口 2
                Case $Button[5]
                        MsgBox(48,0,"你点了主窗口 3 中的第一个按钮")
                Case $Button[6]
                        GUISetState(@SW_HIDE,$WinSub3);  隐藏 子窗口 3
                Case $Button[7]
                        MsgBox(48,0,"你点了主窗口 4 中的第一个按钮")
                Case $Button[8]
                        GUISetState(@SW_HIDE,$WinSub4);  隐藏 子窗口 4
                Case $Button[9]
                        MsgBox(48,0,"你点了主窗口 5 中的第一个按钮")
                Case $Button[10]
                        GUISetState(@SW_HIDE,$WinSub5);  隐藏 子窗口 5
                Case $Button[11]
                        MsgBox(48,0,"你点了主窗口 6 中的第一个按钮")
                Case $Button[12]
                        GUISetState(@SW_HIDE,$WinSub6);  隐藏 子窗口 6
                Case $Button[13]
                        MsgBox(48,0,"你点了主窗口 7 中的第一个按钮")
                Case $Button[14]
                        GUISetState(@SW_HIDE,$WinSub7);  隐藏 子窗口 7
                Case $Button[15]
                        MsgBox(48,0,"你点了主窗口 8 中的第一个按钮")
                Case $Button[16]
                        GUISetState(@SW_HIDE,$WinSub8);  隐藏 子窗口 8                                                
        EndSwitch
EndFunc

Func _Exit()
        Exit
EndFunc


[ 本帖最后由 jycel 于 2009-3-14 23:24 编辑 ]
发表于 2009-3-14 23:47:31 | 显示全部楼层

回复 12# jycel 的帖子

没弄明白你的意思,你是要把公告加到那个窗口上?还是什么?
 楼主| 发表于 2009-3-14 23:57:08 | 显示全部楼层
把公告加到GUI窗口上去!
发表于 2009-3-15 00:18:24 | 显示全部楼层
那应该是这样了~希望能帮到你~

#include <GUIConstants.au3>
#include <ButtonConstants.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.au3>


Opt("GUIOneventMode",1)
Dim $Button[24]
$WinMain  = GUICreate("测试", 450, 300)            ;创建主窗口
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")             ;注册窗口关闭事件到函数_Exit

$neirong1 = "系统公告:";定义neirong1为公告内容1
$neirong2 = "欢迎来到本网吧!";定义neirong2为公告内容2
$Label1 = GUICtrlCreateLabel($neirong1 & $neirong2, 5, 280, 580, 15, $SS_CENTERIMAGE);定义需要移动的标签
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT);使标签背景透明

;GUICtrlCreateButton ( "文本", 左侧, 上方 [, 宽度 [, 高度 [, 样式 [, 扩展样式]]]] ) 
$Button[0]  = GUICtrlCreateButton("按键1", 0, 0, 110, 49,$BS_FLAT);显示子窗口 1
$Button[1]  = GUICtrlCreateButton("按键2", 113, 0, 110, 49,$BS_FLAT);显示子窗口 2
$Button[2]  = GUICtrlCreateButton("按键3", 226, 0, 110, 49,$BS_FLAT);显示子窗口 3
$Button[3]  = GUICtrlCreateButton("按键4", 339, 0, 110, 49,$BS_FLAT);显示子窗口 4
$Button[4]  = GUICtrlCreateButton("按键5", 0, 50, 110, 49,$BS_FLAT);显示子窗口 5
$Button[5]  = GUICtrlCreateButton("按键6", 113, 50, 110, 49,$BS_FLAT);显示子窗口 6
$Button[6]  = GUICtrlCreateButton("按键7", 226, 50, 110, 49,$BS_FLAT);显示子窗口 7
$Button[7]  = GUICtrlCreateButton("按键8", 339, 50, 110, 49,$BS_FLAT);显示子窗口 8
$WinSub1  = GUICreate("子窗口", 220, 60)                ;创建子窗口1
GUISetOnEvent($GUI_EVENT_CLOSE, "GUICtrlMsg")           ;注册窗口关闭事件到函数GUICtrlMsg
$Button[8] = GUICtrlCreateButton("确认", 0, 0, 100, 50,$BS_DEFPUSHBUTTON)
$Button[9]= GUICtrlCreateButton("取消", 110, 0, 100, 50,$BS_DEFPUSHBUTTON);创建子窗口中按钮二

$WinSub2  = GUICreate("子窗口", 220, 60)                ;创建子窗口2
GUISetOnEvent($GUI_EVENT_CLOSE, "GUICtrlMsg")           ;注册窗口关闭事件到函数GUICtrlMsg
$Button[10]= GUICtrlCreateButton("确认", 0, 0, 100, 50,$BS_DEFPUSHBUTTON)
$Button[11]= GUICtrlCreateButton("取消", 110, 0, 100, 50,$BS_DEFPUSHBUTTON);创建子窗口中按钮二

$WinSub3  = GUICreate("子窗口", 220, 60)                ;创建子窗口2
GUISetOnEvent($GUI_EVENT_CLOSE, "GUICtrlMsg")           ;注册窗口关闭事件到函数GUICtrlMsg
$Button[12] = GUICtrlCreateButton("确认", 0, 0, 100, 50,$BS_DEFPUSHBUTTON)
$Button[13] = GUICtrlCreateButton("取消", 110, 0, 100, 50,$BS_DEFPUSHBUTTON);创建子窗口中按钮二

$WinSub4  = GUICreate("子窗口", 220, 60)                ;创建子窗口2
GUISetOnEvent($GUI_EVENT_CLOSE, "GUICtrlMsg")           ;注册窗口关闭事件到函数GUICtrlMsg
$Button[14] = GUICtrlCreateButton("确认", 0, 0, 100, 50,$BS_DEFPUSHBUTTON)
$Button[15] = GUICtrlCreateButton("取消", 110, 0, 100, 50,$BS_DEFPUSHBUTTON);创建子窗口中按钮二

$WinSub5  = GUICreate("子窗口", 220, 60)                ;创建子窗口2
GUISetOnEvent($GUI_EVENT_CLOSE, "GUICtrlMsg")           ;注册窗口关闭事件到函数GUICtrlMsg
$Button[16] = GUICtrlCreateButton("确认", 0, 0, 100, 50,$BS_DEFPUSHBUTTON)
$Button[17] = GUICtrlCreateButton("取消", 110, 0, 100, 50,$BS_DEFPUSHBUTTON);创建子窗口中按钮二

$WinSub6  = GUICreate("子窗口", 220, 60)                ;创建子窗口2
GUISetOnEvent($GUI_EVENT_CLOSE, "GUICtrlMsg")           ;注册窗口关闭事件到函数GUICtrlMsg
$Button[18] = GUICtrlCreateButton("确认", 0, 0, 100, 50,$BS_DEFPUSHBUTTON)
$Button[19] = GUICtrlCreateButton("取消", 110, 0, 100, 50,$BS_DEFPUSHBUTTON);创建子窗口中按钮二

$WinSub7  = GUICreate("子窗口", 220, 60)                ;创建子窗口2
GUISetOnEvent($GUI_EVENT_CLOSE, "GUICtrlMsg")           ;注册窗口关闭事件到函数GUICtrlMsg
$Button[20] = GUICtrlCreateButton("确认", 0, 0, 100, 50,$BS_DEFPUSHBUTTON)
$Button[21] = GUICtrlCreateButton("取消", 110, 0, 100, 50,$BS_DEFPUSHBUTTON);创建子窗口中按钮二

$WinSub8  = GUICreate("子窗口", 220, 60)                ;创建子窗口2
GUISetOnEvent($GUI_EVENT_CLOSE, "GUICtrlMsg")           ;注册窗口关闭事件到函数GUICtrlMsg
$Button[22] = GUICtrlCreateButton("确认", 0, 0, 100, 50,$BS_DEFPUSHBUTTON)
$Button[23] = GUICtrlCreateButton("取消", 110, 0, 100, 50,$BS_DEFPUSHBUTTON);创建子窗口中按钮二

For $I = 22 to 0 Step -1
        GUICtrlSetOnEvent($Button[$I],"GUICtrlMsg") ;注册总共的六个按钮点击事件到函数 GUICtrlMsg
                                                    ;请区分 GUISetOnEvent 和 GUICtrlSetOnEvent的区别
Next

GUISwitch($WinMain)                            ;切换当前窗口到主窗口
GUISetState(@SW_SHOW)                          ;显示当前窗口

$b = 1
While 1
        If $b = 630 Then $b = 1
        Sleep(20)
        ControlMove($WinMain, "", $Label1, 450 - $b, 280)
        $b += 1
WEnd


Func GUICtrlMsg()
        Switch @GUI_CtrlId;选择事件 ID 或 控件 ID
                Case $GUI_EVENT_CLOSE;如果点下的是$GUI_EVENT_CLOSE(关闭)
                        GUISetState(@SW_HIDE,@GUI_WinHandle);  隐藏产生事件的窗口
                Case $Button[0]
                        GUISetState(@SW_SHOW,$WinSub1);  显示 子窗口 1
                                Case $Button[1]
                        GUISetState(@SW_HIDE,$WinSub1);  隐藏 子窗口 2
                Case $Button[2]
                        GUISetState(@SW_SHOW,$WinSub2);  显示 子窗口 2
                Case $Button[3]
                        GUISetState(@SW_SHOW,$WinSub3);  显示 子窗口 3
                Case $Button[4]
                        GUISetState(@SW_SHOW,$WinSub4);  显示 子窗口 4                                                
                Case $Button[5]
                        GUISetState(@SW_SHOW,$WinSub5);  显示 子窗口 5
                Case $Button[6]
                        GUISetState(@SW_SHOW,$WinSub6);  显示 子窗口 6
                Case $Button[7]
                        GUISetState(@SW_SHOW,$WinSub7);  显示 子窗口 7
                Case $Button[8]
                        GUISetState(@SW_SHOW,$WinSub8);  显示 子窗口 8
                Case $Button[8]
                        MsgBox(48,0,"你点了主窗口 1 中的第一个按钮")
                        GUISetState(@SW_HIDE,$WinSub2);  隐藏 子窗口 2
                Case $Button[3]
                        MsgBox(48,0,"你点了主窗口 2 中的第一个按钮")
                Case $Button[4]
                        GUISetState(@SW_HIDE,$WinSub2);  隐藏 子窗口 2
                Case $Button[5]
                        MsgBox(48,0,"你点了主窗口 3 中的第一个按钮")
                Case $Button[6]
                        GUISetState(@SW_HIDE,$WinSub3);  隐藏 子窗口 3
                Case $Button[7]
                        MsgBox(48,0,"你点了主窗口 4 中的第一个按钮")
                Case $Button[8]
                        GUISetState(@SW_HIDE,$WinSub4);  隐藏 子窗口 4
                Case $Button[9]
                        MsgBox(48,0,"你点了主窗口 5 中的第一个按钮")
                Case $Button[10]
                        GUISetState(@SW_HIDE,$WinSub5);  隐藏 子窗口 5
                Case $Button[11]
                        MsgBox(48,0,"你点了主窗口 6 中的第一个按钮")
                Case $Button[12]
                        GUISetState(@SW_HIDE,$WinSub6);  隐藏 子窗口 6
                Case $Button[13]
                        MsgBox(48,0,"你点了主窗口 7 中的第一个按钮")
                Case $Button[14]
                        GUISetState(@SW_HIDE,$WinSub7);  隐藏 子窗口 7
                Case $Button[15]
                        MsgBox(48,0,"你点了主窗口 8 中的第一个按钮")
                Case $Button[16]
                        GUISetState(@SW_HIDE,$WinSub8);  隐藏 子窗口 8                                                
        EndSwitch
EndFunc

Func _Exit()
        Exit
EndFunc
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-18 19:46 , Processed in 0.096683 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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