《MCI-windows编程实现实例》由会员分享,可在线阅读,更多相关《MCI-windows编程实现实例(5页珍藏版)》请在金锄头文库上搜索。
1、MCIwindows编程实现实例 MCI_windows编程实现实例MCI接口编程实验一、实验目的熟悉Windows下声卡编程的基本过程及原理,掌握Windows下MCI编程的基本知识。二、预备知识VC5编程方法、MCI编程方法。三、实验原理设计多媒体程序,关键是对多种媒体设备的控制和使用,在WindowsXP和Windows95系统中,对多媒体设备进行控制主要有三种方法:第一种方法是使用微软公司窗口系统中对多媒体支持的MCI,即媒体控制接口,MCI是多媒体设备和多媒体应用软件之间进行设备无关的沟通的桥梁。在VB和VC中,MCI都得到了很好的支持。第二种方法,通过调用Windows的API(应
2、用程序接口)多媒体相关函数实现媒体控制。第三种方法是使用OLE(Object Linking Embedding),即对象链接与嵌入技术,它为不同软件之间共享数据和资源提供了有力的手段。我们在本实验中用最简单的方法来实现声音的播放和录制媒体控制接口编程。有关知识请阅读附录中“VC多媒体”部分。四、实验要求本实验非常简单和基础,请已经熟悉VC和MCI这些内容的同学耐心地再做一遍。请同学们参照示例中的程序代码,编制自己的声卡程序并应用各种声音播放的方法。具体要求如下:1. 学会使用PlaySound()、SndPlaySound()来播放WAV文件;2. 学会使用mciSendCommand()或
3、mciSendString()来播放WAV文件;3. 学会使用mciSendCommand()或mciSendString()来录制WAV文件;4. 实验完成以后,需要实验室老师检查通过。5. 在意思清楚、完整的前提下,思考题的回答越精炼越好。6. 在以上基本要求完成的前提下,有能力的同学可以试一下用MCI接口播放其他格式的文件;制作一个媒体播放器。MCI_windows编程实现实例五、使用示例1 sndPlaySound(ding.wav,SND_SYNC);2 PlaySound(chord.wav,NULL,SND_SYNC );3 使用两个高级MCI函数a. 播放MIDI文件示例HWN
4、D hwnd;MCI_OPEN_PARMS mciopen;MCI_OPEN_PARMS mciplay;DWORD rtrn;char b80;hwndGetActiveWindow()-m_hWnd;= mciopen.lpstrElementName = e:testtest.rmi;rtrn = mciSendCommand(0,MCI_OPEN,MCI_OPEN_TYPE|MCI_OPEN_ELEMENT, (DWORD)(LPVOID)&mciopen); if(rtrn != 0)mciGetErrorString(rtrn,(LPSTR)b,80);:MessageBox(hw
5、nd,b,MCI ERROR!,MB_OK);wDeviceID = mciopen.wDeviceID; mciplay.dwCallback = (DWORD)hwnd; rtrn = mciSendCommand(wDeviceID,MCI_PLAY,MCI_NOTIFY,(DWORD)(LPVOID)&mciplay); if (rtrn != 0L) mciopen.lpstrDeviceType = sequencer ; =mciGetErrorString(rtrn,(LPSTR)b,80);:MessageBox(hwnd,b,MCI Error,MB_OK);mciSend
6、Command(wDeviceID,MCI_CLOSE,0,NULL);/停止播放HWND hwnd;MCI_GENERIC_PARMS mcistop;hwndGetActiveWindow()-m_hWnd; mcistop.dwCallback = (DWORD)hwnd; mciSendCommand(MCI_DEVTYPE_SEQUENCER,MCI_STOP,0,(DWORD)(LPVOID)&mcistop);MCI_windows编程实现实例b. 录音示例 =HWND hwnd;MCI_OPEN_PARMS mciopen;MCI_RECORD_PARMS mci1;MCI_S
7、AVE_PARMS mcisave;DWORD rtrn;char b80;hwndGetActiveWindow()-m_hWnd;rtrn = mciSendCommand(0,MCI_OPEN,MCI_OPEN_TYPE|MCI_OPEN_ELEMENT, (DWORD)(LPVOID)&mciopen); if(rtrn != 0)mciGetErrorString(rtrn,(LPSTR)b,80);:MessageBox(hwnd,b,MCI ERROR!,MB_OK); = wDeviceID = mciopen.wDeviceID;mci1.dwCallback = (DWOR
8、D)hwnd; rtrn = mciSendCommand(wDeviceID,MCI_RECORD,MCI_NOTIFY,(DWORD)(LPVOID)&mci1); if (rtrn != 0L) mciopen.lpstrElementName = e:ding.wav; mcisave.lpfilename = e:ding.wav; mciopen.lpstrDeviceType = waveaudio;mciGetErrorString(rtrn,(LPSTR)b,80);:MessageBox(hwnd,b,MCI Error,MB_OK);mciSendCommand(wDev
9、iceID,MCI_CLOSE,0,NULL);/保存到文件并停止录音HWND hwnd;MCI_SAVE_PARMS mcisave;MCI_OPEN_PARMS mciopen;DWORD rtrn;char b80;hwndGetActiveWindow()-m_hWnd;mcisave.dwCallback = (DWORD)hwnd; mciopen.lpstrElementName = e:ding.wav; mcisave.lpfilename = e:ding.wav; mciopen.lpstrDeviceType = waveaudio;MCI_windows编程实现实例r
10、trn = mciSendCommand(wDeviceID,MCI_SAVE,MCI_NOTIFY,(DWORD)(LPVOID)&mcisave); if (rtrn != 0L)mciGetErrorString(rtrn,(LPSTR)b,80);:MessageBox(hwnd,b,MCI Error save,MB_OK);mciSendCommand(wDeviceID,MCI_CLOSE,0,NULL);c. 实验示例现给出VC5下的声卡编程样本程序test.exe及其源代码。请同学们参照。六、思考题1 什么是MCI接口?简述MCI所囊括的内容。2 Windows下播放波形文件可以采用几种方法,各有什么优缺点? 3 简述Windows下多媒体程序开发的特点。-全文完-