MCI_windows编程实现实例
更新时间:2023-06-10 07:12:01 阅读量: 实用文档 文档下载
- mciwiki推荐度:
- 相关推荐
MCI_windows编程实现实例
MCI接口编程实验
一、实验目的
熟悉Windows下声卡编程的基本过程及原理,掌握Windows下MCI编程的基本知识。
二、预备知识
VC5编程方法、MCI编程方法。
三、实验原理
设计多媒体程序,关键是对多种媒体设备的控制和使用,在WindowsXP和Windows95系统中,对多媒体设备进行控制主要有三种方法:第一种方法是使用微软公司窗口系统中对多媒体支持的MCI,即媒体控制接口,MCI是多媒体设备和多媒体应用软件之间进行设备无关的沟通的桥梁。在VB和VC中,MCI都得到了很好的支持。第二种方法,通过调用Windows的API(应用程序接口)多媒体相关函数实现媒体控制。第三种方法是使用OLE(Object Linking & Embedding),即对象链接与嵌入技术,它为不同软件之间共享数据和资源提供了有力的手段。
我们在本实验中用最简单的方法来实现声音的播放和录制—媒体控制接口编程。有关知识请阅读附录中“VC多媒体”部分。
四、实验要求
本实验非常简单和基础,请已经熟悉VC和MCI这些内容的同学耐心地再做一遍。请同学们参照示例中的程序代码,编制自己的声卡程序并应用各种声音播放的方法。具体要求如下:
1. 学会使用PlaySound()、SndPlaySound()来播放WAV文件;
2. 学会使用mciSendCommand()或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文件示例
{
HWND hwnd;
MCI_OPEN_PARMS mciopen;
MCI_OPEN_PARMS mciplay;
DWORD rtrn;
char b[80];
hwndGetActiveWindow()->m_hWnd;
= mciopen.lpstrElementName = "e:\\test\\test.rmi";
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; 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);
mciSendCommand(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_SAVE_PARMS mcisave;
DWORD rtrn;
char b[80];
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 = (DWORD)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(wDeviceID,MCI_CLOSE,0,NULL);
}
}
//保存到文件并停止录音
{
HWND hwnd;
MCI_SAVE_PARMS mcisave;
MCI_OPEN_PARMS mciopen;
DWORD rtrn;
char b[80];
hwndGetActiveWindow()->m_hWnd;
mcisave.dwCallback = (DWORD)hwnd; mciopen.lpstrElementName = "e:\\ding.wav"; mcisave.lpfilename = "e:\\ding.wav"; mciopen.lpstrDeviceType = "waveaudio";
MCI_windows编程实现实例
rtrn = 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下多媒体程序开发的特点。
正在阅读:
MCI_windows编程实现实例06-10
物流工程课程设计05-06
游北京作文500字07-02
浅论上市企业管理中激励措施07-08
3 采煤方法及采区巷道布置12-26
资本运作期末学业论文格式规范03-12
内蒙古充电项目实施方案04-28
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 实例
- windows
- 编程
- 实现
- MCI
- 第三章 案例分析
- 对我国石油生产流通体制模式的研究
- 我国转基因食品市场准入和召回研究
- 揭开特异功能的神秘面纱一集
- 开展社区矫正工作汇报材料
- 大棚韭菜栽培技术要点
- 实实在在地打基础——云南省红河哈尼族彝族自治州安监局局长张正明访谈
- 在线编辑word&powerpoint的电子备课系统
- 通风区9、10、11、12月份隐患预排查预分析
- 相似三角形中证明技巧
- 对某高层建筑结构设计的分析
- 大学英语二——第四章
- 大气压强趣味实验案例分析
- 卡西欧 5146 说明书
- 2016年电网调度运行工作计划
- 高压试验基本知识(绝缘试验实施导则)2011.7
- 中国青年志愿者的行动、宗旨、口号及原则
- “网络服务器搭建,配置与管理项目实训”实训操作测试题
- 心电图--心律失常
- 第五章 公司的治理结构