| 关键词: 文件 音乐 控件 Command 按钮 Player 路径名 功能 FileName SubPrivate |
本文作者曾经读过不少关于如何用VB实现播放MP3格式音乐文件的文章。这些文章所介绍的方法都具有一个相同的特点,即要借助某个第三方提供的具有专门的MP3解码功能的控件。能不能直接利用VB自身所提供的多媒体控件来实现MP3播放功能呢?答案是肯定的。任何一种编码格式的音、视频文件都要通过其相应的解码器解码后才能实现播放的目的,MP3也不例外。Microsoft在Win9x系统中已经内置了MP3的解码驱动,因此我们完全可以利用它直接对MP3进行解码,从而实现播放MP3的目的。在编码上,我们只需在C:\windows\system.ini文件的[MCI]项目中添加命令行:mp3audio=mciqtz.drv 使VB自身所提供的多媒体控件能够正确调用相应的解码器对MP3进行解码就足够了。 下面就让我们利用VB自带的MMControl控件做一个MP3播放器实例。 实现步骤如下: 一、 绘制窗体:(见下图) 1.新建一个工程,在窗体中加入 MMControl控件,名称为MP3Player(通过在工具箱上单击鼠标右键弹出的菜单中选择[部件],并在弹出的部件对话框中选中Microsoft Multimedia Control 6.0 可以将MMControl控件添加至工具箱中备用)。 CommonDialog控件,名称为CommonDialog1。 两个Label控件,名称分别为TitleWnd、FileNameWnd。 2.利用菜单编辑器建立菜单[文件],创建两个菜单项,一为[打开](名为file_open),一为[退出](名为file_exit) 二、 在工程中加入一个模块,编写播放MP3的过程代码以备调用 三、 程序编码 1.form1中的代码: Option ExplicitPrivate boPause As Boolean '用于暂停/播放按钮的逻辑判断Private Declare Function WritePrivateProfileString Lib "kernel32" _ Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, _ ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) _ As Long '写ini文件的API函数声明Private Sub file_exit_Click(Index As Integer) '菜单"退出"处理 Unload Form1 '终止,退出End SubPrivate Sub file_open_Click(Index As Integer)'功能:菜单"打开"处理 With OpenFileDlg '设置CommonDialog控件 .Flags = 0 '只允许打开单个文件 .MaxFileSize = 10000 '设置最大文件数 .Filter = "(*.mp3)|*.mp3" '只显示.mp3文件 .FileName = "" '设置初始文件路径名 .ShowOpen '显示对话框 End With If OpenFileDlg.FileName = "" Then Exit Sub '若未选中文件则退出本过程 Else '若选中文件则设置提示文字并启动MCI设备 TitleWnd.Caption = "选中一个音乐文件[请点击播放按钮播放音乐]" FileNameWnd.Caption = OpenFileDlg.FileName '显示音乐文件路径名 PlayMP3 MP3Player, OpenFileDlg.FileName '启动MCI设备播放音乐 MP3Player.Command = "stop" '通过stop、prev两命令使面板上的play按钮 MP3Player.Command = "prev" '有效等待用户通过鼠标单击方式发出播放命令 End If End SubPrivate Sub Form_Load()'功能:载入面板初始设置 With Form1 '设置面板标题及边框样式 .Caption = "MP3播放实例[Written by Minipuss]" .BorderStyle = 1 End With With TitleWnd '设置提示窗口标题及前景色(GREEN) .Caption = "目前无音乐文件被选中[请通过菜单进行选择]" .ForeColor = RGB(0, 255, 0) End With With FileNameWnd '设置路径名窗口标题及前景色(GREEN) .Caption = "" .ForeColor = RGB(0, 255, 0) End With '调用写ini文件的函数在C:\windows\system.ini的[MCI]中添加 'mp3audio=mciqtz.drv使得系统MCI设备可MP3格式文件进行解码 '从而播放该格式音乐文件 WritePrivateProfileString "MCI", "mp3audio", "mciqtz.drv", "C:\windows\system.ini" boPause = False '初始化boPause=FalseEnd SubPrivate Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)'功能:Aplication结束前善后处理 With MP3Player 'Aplication结束时停止播放音乐并关闭MCI设备 .Command = "stop" .Command = "close" End WithEnd SubPrivate Sub MP3Player_PauseClick(Cancel As Integer)'功能:暂停按钮点击事件处理 boPause = boPause Xor True 'boPause异或1 If boPause = True Then '第一次点击暂停按钮时暂停播放音乐 MP3Player.Command = "stop" Else '第二次点击暂停按钮时从中止处继续播放音乐 MP3Player.Command = "sound" End IfEnd SubPrivate Sub MP3Player_PlayClick(Cancel As Integer)'功能:播放按钮点击事件处理 MP3Player.Command = "sound" '点击播放按钮时从头播放音乐End SubPrivate Sub MP3Player_PlayCompleted(Errorcode As Long)'功能:音乐播放完毕事件处理 MP3Player.Command="prev" '音乐播放完毕后回到播放始点使播放按钮有效End SubPrivate Sub MP3Player_StopClick(Cancel As Integer)'功能:停止按钮点击事件处理 With MP3Player '停止播放音乐并回到播放始点使播放按钮有效 .Command = "stop" .Command = "prev" End WithEnd Sub 2.模块中的代码: Option ExplicitPublic Sub PlayMP3(TheObject As Object, ByVal FileName As String)'功能:开启一个MCI设备,播放音乐'TheObject为对象名,这里须为MMControl对象'FileName为音乐文件路径名 With TheObject .Command = "close" '预处理,关闭曾经开启的MCI设备 .DeviceType = "mp3audio" '指定多媒体设备类型为mp3audio .FileName = FileName '指定要播放的音乐文件路径名 .Command = "open" '开启一个MCI设备 .Command = "play" '发送命令播放音乐 End WithEnd Sub 关于MMControl控件的详细使用方法请参考MSDN,本程序调试环境:Win98SE,Visual Basic 6.0企业版。 |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|