找回密码
 加入
搜索
查看: 16646|回复: 25

[原创] GUI设计与制作入门(二)

 火.. [复制链接]
发表于 2008-5-5 18:20:57 | 显示全部楼层 |阅读模式
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 = $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设计中的其他控件的制作与应用将在第三讲中详细解答。
以上内容可以转载,但必须注明。如果存在错误,请告之!!!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


不能运行,,不知道是哪里错了呢。。。。
发表于 2008-6-21 22:31:13 | 显示全部楼层

回复 2# 流浪的风 的帖子

错来错去的,
先学学变量和循环,条件语句吧
发表于 2008-6-22 22:21:58 | 显示全部楼层
GUI 真的很难搞,不知道如何把窗口和代码连接到一起去   不比vb 或者其他语言双击控件就可以编辑代码了,不知道什么时间才能开发到如此地步
发表于 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不知道在那里,只整合
发表于 2008-12-1 09:14:30 | 显示全部楼层
原帖由 流浪的风 于 2008-5-10 15:11 发表
正在学习楼主的教程,只是,我按照楼主所说了,弄了这么一个,但是不能运行,请各位帮帮。。。

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


While  $msg = GUIGetMsg()
        If $msg = $exit Then
发表于 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 | 显示全部楼层
我也想知道窗体和代码是怎么到一块滴,
发表于 2009-5-27 14:21:10 | 显示全部楼层
和管理员发的一样吗?
发表于 2009-9-19 14:50:42 | 显示全部楼层
metbar mds 好象就是用AUTOIT做的管理软件
发表于 2009-9-19 19:40:00 | 显示全部楼层
我的出错了。
发表于 2009-9-20 14:30:52 | 显示全部楼层
万事开头难
发表于 2009-12-9 20:48:10 | 显示全部楼层
好东西。。感谢
发表于 2010-9-10 14:09:11 | 显示全部楼层
发表于 2010-9-10 14:31:46 | 显示全部楼层
用Koda很方便
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-4-25 20:04 , Processed in 0.083912 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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