#include <GUIConstants.au3>
#include <Sound.au3>
#include <ButtonConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#NoTrayIcon;无托盘图标
#Region ### START Koda GUI section ###
Global $Form1 = GUICreate("muh's mp3 player", 366, 315, 372, 229)
;设计播放器主窗口
GUISetBkColor(0xA6CAF0)
;设置主窗口背景颜色
$Button1 = GUICtrlCreateButton("Play", 192, 24, 57, 33, 0)
$Button2 = GUICtrlCreateButton("Stop", 296, 24, 57, 33, 0)
$Button3 = GUICtrlCreateButton("Player repeat mode", 224, 80, 89, 41, $BS_MULTILINE)
$Slider1 = GUICtrlCreateSlider(184, 168, 169, 25) ;创建调节音量大小的滑动条
;设计3个按钮用于 play ,stop ,player repeat mode
GUICtrlSetBkColor($Slider1, 0xA6CAF0)
;设计 窗口中控件$Slider1颜色
GUICtrlSetData($Slider1, 100)
;修改$Slider1控件的值
;GUICtrlSetData ( 控件ID, 数据 [, 默认值] )
$Label1 = GUICtrlCreateLabel("Volume", 240, 144, 58, 24)
;Volume是Static1控件的标题
;创建声音的音量滚动条
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
;为控件设置字体,是为$Label1设置吗?
$Pic1 = GUICtrlCreatePic(@ScriptDir & "\pic.jpg", 8, 8, 169, 241, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS));脚本同目录下的pic.jpg为背景图
;设置控件的背景图片,可我怎么没看到图片效果?难道需要我在同一目录放置一个pic.jpg,试试
;$Pic1怎么是 Static2控件的背景图片,我是否能让它自动换图片?
$Label2 = GUICtrlCreateLabel("File selected: ", 8, 264, 387, 20)
;$Label2是 Static3控件
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
;为$Label2设置字体
$MenuItem3 = GUICtrlCreateMenu("&File")
$MenuItem4 = GUICtrlCreateMenuItem("Load file", $MenuItem3)
;创建子菜单,$MenuItem3表示它是子菜单的父菜单,以下类似
$MenuItem2 = GUICtrlCreateMenu("&Settings")
$MenuItem5 = GUICtrlCreateMenuItem("Exit", $MenuItem2)
$MenuItem1 = GUICtrlCreateMenu("&Help")
$MenuItem6 = GUICtrlCreateMenuItem("About us", $MenuItem1)
;以上是菜单设计,包括下拉菜单
GUISetState(@SW_SHOW)
;显示窗口
#EndRegion ### END Koda GUI section ###
Global $snd = "" ;存储MP3文件的变量,默认为空字符
Global $rpd = True; true - 重复播放音乐 , false - 不重复播放
Global $poss[21]
Global $len = "a"
;自定义一些用到的全局变量
SoundSetWaveVolume(100)
;调整系统波形音量的百分比大小,在0-100之间,不是调整主音量,即使被设置为 0,也不表示静音
Global $fp = "a"
$rpd_Label = GUICtrlCreateLabel("$rpd变量的值: " & $rpd, 8, 70, 387, 20);建立一个lable来显示重复播放标志变量的布尔值
;以下是消息模式的While循环判断,但我没看懂?
;_SoundPlay,_SoundClose在UDF里面,Sound.au3
While 1;无限循环,一个死循环,但是可以在循环内部判断是否要跳出循环
$nMsg = GUIGetMsg();获取窗口消息
$pos = _SoundPos($snd, 2) ;获取当前播放的音乐时间
If $pos > 0 And $pos == $len Then;播放时间大于0且播放时间等于当前播放音乐长度时
_SoundStop($snd);停止播放
If $rpd == True Then;当变量$rpd为True时,重复播放
_SoundPlay($snd)
EndIf
EndIf
;上面的if是用来判断音乐是否播放完毕,以及是否要重复播放
Switch $nMsg
Case $GUI_EVENT_CLOSE ;按窗口X关闭主窗口
_SoundClose($snd);关闭播放的音乐
Exit;退出死循环
Case $MenuItem4 ;按Load file子菜单载入歌曲文件
$fp = FileOpenDialog("Music file", @ScriptDir, "MP3 Files (*.mp3)");文件打开对话框,参数依次是“对话框标题”,“默认打开目录”,打开文件类型
$snd = _SoundOpen($fp);载入选择的mp3文件
GUICtrlSetData($Label2, "File selected: " & $fp);在$Label2内显示选种的MP3
Case $Button1
_SoundPlay($snd);播放MP3
$len = _SoundLength($snd, 2);取得播放文件的时间长度
Case $Button2
_SoundStop($snd);停止正在播放的MP3
Case $Slider1
$vm = GUICtrlRead($Slider1) ;读取指定控件的状态或相关数据
SoundSetWaveVolume($vm) ;设置波形音量百分比
Case $MenuItem5 ;停止并退出正在播放的MP3
_SoundStop($snd);停止音乐播放
Exit;退出死循环
Case $MenuItem6 ;显示“关于”信息
MsgBox(0, "About us", "This is my first MP3 player yeeeeeey")
Case $Button3
$rpd = Not $rpd;修改$rpd的值,新的布尔值与旧的相反,既true改为false,false改为true
GUICtrlSetData($rpd_Label, "$rpd变量的值: " & $rpd);修改$rpd_Label控件的显示数据
EndSwitch
WEnd
看下这段吧