下它的使用方法:
设Picture控件的ID为IDC_STATIC1:
CStatic *pStatic=(CStatic*)GetDlgItem(IDC_STATIC1);HWND h=pStatic->GetSafeHwnd();
CString open1;
char buf[256];
open1.Format("open f:\\mpeg\\mpeg1.avi type MPEGVideo Alias movie parent %u Style %u notify",
mciSendString(open1.GetBuffer(open1.GetLength()),buf,sizeof(buf),NULL);
这样F盘下面的mpeg目录下的mpeg1.avi就打开了,其中的type MPEGVideo是指打开MPEG,AVI等类型,如果不加
type MPEGVideo这一句,就是打开WAV,MP3等,Alias movie定义了mpeg1.avi的别名为movie,以后可以通过操
做movie就可以操作mpeg1.avi。
mciSendString("play movie",buf,sizeof(buf),NULL);
mciSendString("play movie fullscreen",buf,sizeof(buf),NULL);
mciSendString("pause movie",buf,sizeof(buf),NULL);
mciSendString("close movie",buf,sizeof(buf),NULL);
char sPosition[256];long lLength;
ciSendString("Status movie length", sPosition, 255,0);lLength=strtol(sPosition, NULL, 10);
其中lLength就是所播放文件的长度。
char chVolume[256];long lVolume;mciSendString("status movie volume",chVolume,255,0);lVolume=strtol(chVolume,NULL,10);其中lVolume就是所播放文件的声音大小。
CString step1;long lPosition;
lPosition=100;
step1.Format("seek movie to %ld",lPosition);
mciSendString(step1.GetBuffer(step1.GetLength()),buf,sizeof(buf),0);
其中lPosition就是要到的播放位置,可以由你指定。
你第一播放完毕后,是否已经stop或者说已经释放了mpeg1.avi的文件资源。如果没有stop或者不释放的话。你是应该播放不了的。因为那个文件正在占用。
mciSendString("Set cdAudio door open wait",NULL,0,NULL)就可以打开光驱门,把其中的open改为closed便可关闭门了!
例子:
Private Sub Command1_Click()
Dim back
back = mciSendString&("CLOSE NN", 0, 0, 0)
End Sub
Private Sub Command2_Click()
Dim back
back = mciSendString&("OPEN " + App.Path + "TEST.mid" + " TYPE SEQUENCER ALIAS NN", 0&, 0, 0)
back = mciSendString&("PLAY NN FROM 0", 0&, 0, 0)
R% = mciSendString&("CLOSE ANIMATION", 0&, 0, 0)
End Sub
Private Sub Form_Load()
Dim back
back = mciSendString&("OPEN " + App.Path + "TEST.mid" + " TYPE WaveAudio ALIAS NN", 0&, 0, 0)
back = mciSendString&("PLAY NN FROM 0", 0&, 0, 0)
R% = mciSendString&("CLOSE ANIMATION", 0&, 0, 0)
End Sub
-----------------------------------------------
思路:在TIMER控件中检测当前文件的播放状态,如果为stopped,那么就重复播放
Option Explicit
Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
Private Sub Command1_Click()
Timer1.Enabled = True
Timer1.Interval = 100
Call mciSendString("close all", 0, 0, 0) '首先关闭所有的MCI设备,避免播放多个音乐文件时声音会重叠
Call mciSendString("open " + "c:\winnt\media\ringin.wav", 0, 0, 0) '打开MCI设备
Call mciSendString("play " + "c:\winnt\media\ringin.wav", 0, 0, 0) '播放MCI设备
End Sub
Private Sub Timer1_Timer()
Dim buffer As String * 128
Dim pos As Integer
Call mciSendString("open " + "c:\winnt\media\ringin.wav", 0, 0, 0)
Call mciSendString("play " + "c:\winnt\media\ringin.wav", 0, 0, 0)
End If
End Sub
---------------------------------------------------------------------