xwjsyyx 发表于 2008-5-5 18:20:57

GUI设计与制作入门(二)

GUI设计与制作入门(二)

原作者:xhyxsl

本人学习AutoIt还不到一年,可以说是新手,但在学习过程中得到众多AutoIt爱好者(konan、del888、COCO等)的大力帮助和有益启发。下文的编写纯属个人理解,深入学习还得看原文帮助文件。
按钮的控制与应用是GUI设计的重要组成部分。按钮控制与应用的正确与否将直接关系到GUI设计的质量和水平。
(二)按钮的控制与应用
按钮的控制与应用主要是用来完成一项任务或控制某一个部件的动作。
1、控制的基本方法。一般按钮使用变量来设计与控制。即:
$OK = GUICtrlCreateButton ("按钮OK", 10,20,80,40)
$Cancel = GUICtrlCreateButton ("按钮Cancel", 150,20,80,40)
按钮的控制语句应放在循环判断语句当中。即:在下列循环判断语句当中“...”中加入控制语句。
While 1
      $msg = GUIGetMsg()
...
...
   ...
WEnd
示例脚本如下:
#include <GUIConstants.au3>
GUICreate ("我的图标按钮",400,200)
GUISetBkColor (0xE0FFFF); 设置自己喜欢的色彩
$OK = GUICtrlCreateButton ("按钮OK", 10,20,80,40)
$Cancel = GUICtrlCreateButton ("按钮Cancel", 150,20,80,40)
GUISetState(@SW_SHOW)
While 1
$msg = GUIGetMsg()
Select
    Case $msg = $ok
      MsgBox(0, "按钮的控制", "控制成功!")
    Case $msg = $GUI_EVENT_CLOSE or $msg = $Cancel
      MsgBox(0, "按钮的控制", "控制结束! 按确定或关闭窗口将自动退出程序...!")
      ExitLoop
EndSelect
WEnd
2、循环判断的设置。一般循环判断语句在While...Wend中通常用以下两种语句。即:Select...Case...EndSelect与If <expression> Then(或If...ElseIf...Else...EndIf)(详见帮助文件)。两种判断语句示例脚本:
第一种:
While 1
$msg = GUIGetMsg()
Select
    Case $msg = $ok1
      MsgBox(0, "按钮的控制1", "控制1!")
    Case $msg = $ok2
      MsgBox(0, "按钮的控制", "控制2!")
    Case $msg = $ok3
      MsgBox(0, "按钮的控制", "控制3!")
    Case $msg = $ok4
      MsgBox(0, "按钮的控制", "控制4!")
...
...
    Case $msg = $GUI_EVENT_CLOSE or $msg = $Cancel
      MsgBox(0, "按钮的控制", "控制结束! ")
      ExitLoop
EndSelect
WEnd
这一种判断语句可以设置无限的按钮,只要你的窗口能放下无限的按钮。每一个Case只能控制或完成一项任务,也就是一事一办。当然在Case里面还可以增加下一级或更多级的判断。如增加If <expression> Then语句,也可以增加Select...Case...EndSelect语句(这种情况较为复杂,新手不宜)。
第二种:
While 1
$msg = GUIGetMsg()
if$msg = $exitThen
    MsgBox(0, "退出", "退出控制吗!")
       Exit
 EndIf
if$msg =$ok1Then
     $Box = MsgBox(0, "按钮的控制1", "控制1!")
        if$Box = 1ThenRUN("Setup1.exe")
      Exit
EndIf
if$msg =$ok2Then
     $Box2 = MsgBox(0, "按钮的控制2", "控制2!")
        if$Box2 = 1ThenRUN("Setup2.exe")
      Exit
EndIf
if$msg =$ok3Then
     $Box3 = MsgBox(0, "按钮的控制3", "控制3!")
        if$Box3 = 1Then
RUN("Setup3.exe")
         EndIf
EndIf
...
...
WEnd
从示例看,这一种判断语句也同样可以设置无限的按钮,只要你的窗口能放下无限的按钮。每一个If <expression> Then也同样只能控制或完成一项任务。在If <expression> Then里面也可以增加下一级的判断。如增加Select...Case...EndSelect。看示例:
While 1
$msg = GUIGetMsg()
if$msg = $exitThen
    MsgBox(0, "退出", "退出控制吗!")
       Exit
 EndIf
if$msg =$okThen
     Select
       Case $msg = $ok1
          MsgBox(0, "按钮的控制1", "控制1!")
       Case $msg = $ok2
          MsgBox(0, "按钮的控制", "控制2!")
       Case $msg = $ok3
          MsgBox(0, "按钮的控制", "控制3!")
       Case $msg = $ok4
          MsgBox(0, "按钮的控制", "控制4!")
...
...
       Case $msg = $GUI_EVENT_CLOSEor$msg = $Cancel
          MsgBox(0, "按钮的控制", "控制结束! ")
          ExitLoop
   EndSelect
EndIf
...
...
WEnd
3、注意的事项。在运用判断语句时,无论是用Select...Case...EndSelect语句,还是用If <expression> Then语句时,都要注意:设计任务或动作的脚本最好是在判断语句中一次运行完。另外,关闭窗口和退出的语句都不要忘记加上。如($msg = $GUI_EVENT_CLOSE;$msg = $exit)。特别是在多级判断语句里,不要忘记退出循环的语句。如(ExitLoop;EndSelect;EndIf;WEnd)。
关于GUI设计中的其他控件的制作与应用将在第三讲中详细解答。
以上内容可以转载,但必须注明。如果存在错误,请告之!!!xhyxsl@126.com

流浪的风 发表于 2008-5-10 15:11:30

正在学习楼主的教程,只是,我按照楼主所说了,弄了这么一个,但是不能运行,请各位帮帮。。。

#include<GUIConstants.au3>
GUICreate("我的窗口",400,200)
GUISetBkColor(0xff00ff)
GUISetState(@SW_SHOW)
While$msg = GUIGetMsg()
        If $msg = $exit Then
                MsgBox(0,"退出","退出控制吗")
                Exit
        EndIf
        if $msg = $ok Then
                Select
                        Case $msg = $ok1
                                MsgBox(0,"按扭1","按扭1的控制")
                        Case $msg = $ok2
                                MsgBox(0,"按扭2","按扭2的控制")
                        Case $msg = $ok3
                                MsgBox = (0,"按扭3","按扭3的控制")
                        Case $msg = $gui_event_close
                                MsgBox(0,"退出","现在退出了")
                                ExitLoop
                EndSelect
        EndIf
WEnd


不能运行,,不知道是哪里错了呢。。。。

linfnej 发表于 2008-6-21 22:31:13

回复 2# 流浪的风 的帖子

错来错去的,
先学学变量和循环,条件语句吧

shangxin8858 发表于 2008-6-22 22:21:58

GUI 真的很难搞,不知道如何把窗口和代码连接到一起去   不比vb 或者其他语言双击控件就可以编辑代码了,不知道什么时间才能开发到如此地步

sbyguli 发表于 2008-11-26 02:05:44

#include<GUIConstants.au3>
GUICreate("我的窗口",400,200)
GUISetBkColor(0xff00ff)
GUISetState(@SW_SHOW)
While$msg = GUIGetMsg()
      If $msg = $exit Then
                MsgBox(0,"退出","退出控制吗")
                Exit
      EndIf
      if $msg = $ok Then
                Select
                        Case $msg = $ok1
                              MsgBox(0,"按扭1","按扭1的控制")
                        Case $msg = $ok2
                              MsgBox(0,"按扭2","按扭2的控制")
                        Case $msg = $ok3
                              MsgBox = (0,"按扭3","按扭3的控制")
                        Case $msg = $gui_event_close
                              MsgBox(0,"退出","现在退出了")
                              ExitLoop
                EndSelect
      EndIf
WEnd

你的OK不知道在那里,只整合

k1727 发表于 2008-12-1 09:14:30

原帖由 流浪的风 于 2008-5-10 15:11 发表 http://www.autoitx.com/images/common/back.gif
正在学习楼主的教程,只是,我按照楼主所说了,弄了这么一个,但是不能运行,请各位帮帮。。。

#include
GUICreate("我的窗口",400,200)
GUISetBkColor(0xff00ff)
GUISetState(@SW_SHOW)
While$msg = GUIGe ...

While$msg = GUIGetMsg()
      If $msg = $exit Then

adowngg 发表于 2008-12-12 10:42:42

先定义各变量和赋值吧

$OK = GUICtrlCreateButton ("按钮OK", 10,20,80,40)
$Cancel = GUICtrlCreateButton ("按钮Cancel", 150,20,80,40)

流氓兔 发表于 2009-5-17 22:52:19

我也想知道窗体和代码是怎么到一块滴,

bachelor66 发表于 2009-5-27 14:21:10

和管理员发的一样吗?

nivisde 发表于 2009-9-19 14:50:42

metbar mds 好象就是用AUTOIT做的管理软件

zxh1220 发表于 2009-9-19 19:40:00

我的出错了。

yigao 发表于 2009-9-20 14:30:52

万事开头难

zcx880517 发表于 2009-12-9 20:48:10

好东西。。感谢

bobo2007 发表于 2010-9-10 14:09:11

{:face (356):}

tankwu 发表于 2010-9-10 14:31:46

用Koda很方便
页: [1] 2
查看完整版本: GUI设计与制作入门(二)