原作者: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 = $exit  Then
      MsgBox(0, "退出", "退出控制吗!")
       Exit
   EndIf
if  $msg =  $ok1  Then
     $Box = MsgBox(0, "按钮的控制1", "控制1!")
        if  $Box = 1  Then  RUN("Setup1.exe")
      Exit
EndIf
if  $msg =  $ok2  Then
     $Box2 = MsgBox(0, "按钮的控制2", "控制2!")
        if  $Box2 = 1  Then  RUN("Setup2.exe")
      Exit
EndIf
if  $msg =  $ok3  Then
     $Box3 = MsgBox(0, "按钮的控制3", "控制3!")
        if  $Box3 = 1  Then 
                            RUN("Setup3.exe")
         EndIf
EndIf
...
WEnd
         从示例看,这一种判断语句也同样可以设置无限的按钮,只要你的窗口能放下无限的按钮。每一个If <expression> Then也同样只能控制或完成一项任务。在If <expression> Then里面也可以增加下一级的判断。如增加Select...Case...EndSelect。看示例:
While 1
$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!")
       Case $msg = $ok3
          MsgBox(0, "按钮的控制", "控制3!")
       Case $msg = $ok4
          MsgBox(0, "按钮的控制", "控制4!")
              ...
       Case $msg = $GUI_EVENT_CLOSE  or  $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设计中的其他控件的制作与应用将在第三讲中详细解答。
以上内容可以转载,但必须注明。如果存在错误,请告之 !!![email]xhyxsl@126.com[/email]