⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mmedia.vb

📁 这是一本用Visual Studio.NET进行多媒体编程的读物
💻 VB
字号:
Option Strict Off
Option Explicit On
Friend Class Mmedia
	
	'---------类模块---------------------------------------
	'   Name   :   MMedia.cls
	'   Notes   :   A multimedia class, which when turned
	'           :   into an object lets you load and play
	'           :   multimedia files, such as sound and
	'           :   video.
	'--------------------------------------------------------
	
	Private sAlias As String '为多媒体资源指定一个别名
	
	Private sFilename As String '内部变量,存放文件名
	Private nLength As Single '内部变量,存放文件的长度
	Private nPosition As Single '内部变量,存放当前的播放位置
	Private sStatus As String '内部变量,存放当前的状态
	Private bWait As Boolean ' 指示播放的方式:同步或者异步
	
	'声明mciSendString函数
	Private Declare Function mciSendString Lib "winmm.dll"  Alias "mciSendStringA"(ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Integer, ByVal hwndCallback As Integer) As Integer
	
	Public Sub mmOpen(ByVal sTheFile As String)
		
		'声明一个变量以保存mciSendString函数的返回值
		Dim nReturn As Integer
		
		'声明一个字符创变量以保存 文件名称
		Dim sType As String
		
		' 打开指定的多媒体文件,并关闭其它可能打开的文件
		If sAlias <> "" Then
			mmClose()
		End If
		
		' 由文件的扩展名来判定文件类型
		Select Case UCase(Right(sTheFile, 3))
			Case "WAV"
				sType = "Waveaudio"
			Case "AVI"
				sType = "AviVideo"
			Case "MID"
				sType = "Sequencer"
			Case Else
				' 如果文件扩展名未知则退出过程
				Exit Sub
		End Select
		sAlias = Right(sTheFile, 3) & Minute(Now)
		
		' At this point there is no file open, and we have determined the
		' file type. Now would be a good time to open the new file.
		'现在,没有文件打开,同时也确定了文件的类型,所以可以打开
		'指定的多媒体文件了。
		If InStr(sTheFile, " ") Then sTheFile = Chr(34) & sTheFile & Chr(34)
		nReturn = mciSendString("Open " & sTheFile & " ALIAS " & sAlias & " TYPE " & sType & " wait", "", 0, 0)
	End Sub
	
	Public Sub mmClose()
		' 关闭当前打开的文件
		
		'声明一个变量以保存mciSendString函数的返回值
		Dim nReturn As Integer
		
		' 如果当前没有文件打开则退出该过程
		If sAlias = "" Then Exit Sub
		
		nReturn = mciSendString("Close " & sAlias, "", 0, 0)
		sAlias = ""
		sFilename = ""
		
	End Sub
	
	Public Sub mmPause()
		' 暂停多媒体文件的回放
		
		'声明一个变量以保存mciSendString函数的返回值
		Dim nReturn As Integer
		
		'如果当前没有文件打开则退出该过程
		If sAlias = "" Then Exit Sub
		
		nReturn = mciSendString("Pause " & sAlias, "", 0, 0)
		
	End Sub
	
	Public Sub mmPlay()
		' 从当前的位置开始播放当前打开的文件
		
		'声明一个变量以保存mciSendString函数的返回值
		Dim nReturn As Integer
		
		'如果当前没有文件打开则退出该过程
		If sAlias = "" Then Exit Sub
		
		' 开始播放
		If bWait Then
			nReturn = mciSendString("Play " & sAlias & " wait", "", 0, 0)
		Else
			nReturn = mciSendString("Play " & sAlias, "", 0, 0)
		End If
	End Sub
	
	Public Sub mmStop()
		' 完全停止播放一个打开的文件
		
		'声明一个变量以保存mciSendString函数的返回值
		Dim nReturn As Integer
		
		'如果当前没有文件打开则退出该过程
		If sAlias = "" Then Exit Sub
		
		nReturn = mciSendString("Stop " & sAlias, "", 0, 0)
		
	End Sub
	
	Public Sub mmSeek(ByVal nPosition As Single)
		'在打开的文件内寻找指定的位置
		
		'声明一个变量以保存mciSendString函数的返回值
		Dim nReturn As Integer
		
		nReturn = mciSendString("Seek " & sAlias & " to " & nPosition, "", 0, 0)
		
	End Sub
	
	
	Property FileName() As String
		Get
			'返回Filename属性的值
			FileName = sFilename
		End Get
		Set
			' 设置Filename属性的值,同时也将用mmOpen过程打开Filename属性
			' 所指定的多媒体文件
			mmOpen(Value)
		End Set
	End Property
	
	
	Property Wait() As Boolean
		Get
			' 返回对象的Wait属性的值
			Wait = bWait
		End Get
		Set
			'设置对象的Wait属性的值
			bWait = Value
		End Set
	End Property
	
	ReadOnly Property Length() As Single
		Get
			' 返回当前打开的多媒体文件的文件长度
			
			'声明一个变量以保存mciSendString函数的返回值
			Dim nReturn As Integer
			Dim nLength As Short
			
			'声明一个字符串变量以保存mci "Status"过程的返回值
			Dim sLength As VB6.FixedLengthString = New VB6.FixedLengthString(255)
			
			' 如果没有打开任何文件则返回0
			If sAlias = "" Then
				Length = 0
				Exit Property
			End If
			
			nReturn = mciSendString("Status " & sAlias & " length", sLength.Value, 255, 0)
			nLength = InStr(sLength.Value, Chr(0))
			Length = Val(Left(sLength.Value, nLength - 1))
		End Get
	End Property
	
	
	Property Position() As Single
		Get
			' 返回文件的当前播放位置
			
			'声明一个变量以保存mciSendString函数的返回值
			Dim nReturn, nLength As Short
			
			'声明一个变量以保存mci "Status position"命令返回的位置值
			Dim sPosition As VB6.FixedLengthString = New VB6.FixedLengthString(255)
			
			' 如果没有打开任何文件则退出该过程
			If sAlias = "" Then Exit Property
			
			' 得到位置并返回
			nReturn = mciSendString("Status " & sAlias & " position", sPosition.Value, 255, 0)
			nLength = InStr(sPosition.Value, Chr(0))
			Position = Val(Left(sPosition.Value, nLength - 1))
			
		End Get
		Set
			' 搜索并设置Position 属性的值
			mmSeek(Value)
		End Set
	End Property
	
	ReadOnly Property Status() As String
		Get
			' 返回当前文件的回放/录音状态
			
			'声明一个变量以保存mciSendString函数的返回值
			Dim nReturn, nLength As Short
			
			'声明一个变量以保存mciSendString函数返回的字符串
			Dim sStatus As VB6.FixedLengthString = New VB6.FixedLengthString(255)
			
			'如果没有打开任何文件则退出该过程
			If sAlias = "" Then Exit Property
			
			nReturn = mciSendString("Status " & sAlias & " mode", sStatus.Value, 255, 0)
			
			nLength = InStr(sStatus.Value, Chr(0))
			Status = Left(sStatus.Value, nLength - 1)
			
		End Get
	End Property
End Class

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -