资源预览内容
第1页 / 共30页
第2页 / 共30页
第3页 / 共30页
第4页 / 共30页
第5页 / 共30页
第6页 / 共30页
第7页 / 共30页
第8页 / 共30页
第9页 / 共30页
第10页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
1第第 7 章章 多媒体技术多媒体技术多媒体技术是综合图形、文字、声音和视频图象等多种媒体手段,用于传递和表 达计算机信息的技术。Windows 提供了丰富的多媒体服务功能,用户可以根据自己的 需求,编写层次不同的多媒体应用程序。71 使用使用 MCI 播放播放 WAVE 文件的程序实例文件的程序实例 我们先举一个简单的例子,了解一下多媒体应用程序的编制过程和实现效果。例例 71 声音播放 1、新建项目 (1)创建一个基于对话框的应用程序,名为:播放声音(2)删除原有的“取消”按钮,把“确定”按钮的标题改为“退出” 。 (3)添加一个按钮,其 ID 标识符为:IDC_PLAY,标题为:播放。调整对话框大小 和布局,如图 7.1 所示。 2、为程序添加多媒体支持使用 Visual C+编写多媒体程序时必须 向项目中添加多媒体支持。步骤如下: (1)Project-Setting-打开 Project Setting 对话框- 切换到 Link 选项卡,在 Object/Library modules 文本框中输入 winmm.lib,如图 7.2 所示,OK 退出。 图 7.1 播放声音程序的对话框布局图 7.2 为程序添加多媒体支持(2)在“播放声音 Dlg.h”文件的前面写:#include “MMSystem.h” 3、添加成员变量在 CMyDlg 类(播放声音 Dlg.h)中添加成员变量:MCIDEVICEID m_MCIDeviceID; 4、将一个声音文件如:mail.wav 拷贝到此项目文件夹中。25、在 CMyDlg 类的 OnInitDialog()成员函数中添加以下代码(可以把其它语句全部注释掉): BOOL CMyDlg:OnInitDialog() CDialog:OnInitDialog();MCI_OPEN_PARMS mciOpenParms; / 打开 MCI 设备mciOpenParms.lpstrDeviceType=“waveaudio“; /MCI 设备名 mciOpenParms.lpstrElementName=“mail.wav“; /声音文件,此处写你考到文件夹下的声音文件名 mciSendCommand(0,MCI_OPEN,MCI_OPEN_TYPE|MCI_OPEN_ELEMENT,(DWORD)(LPVOID)m_MCIDeviceID=mciOpenParms.wDeviceID; return TRUE; / return TRUE unless you set the focus to a control说 明:(1)mail.wav 是一个 WAV 声音文件,第 4 步时已经复制到此项目文件中。程序首先打开了 MCI设备,并把设备标识赋给了类的成员变量 m_MCIDeviceID。注意声音文件名不要带扩展名.wav。 6、播放声音文件用 ClassWizard 为播放按钮(IDC_PLAY) ,在 CMyDlg 类添加鼠标单击的消息映射 函数,并加如下代码: void CMyDlg:OnPlay() /添加控件通知消息处理代码 MCI_PLAY_PARMS mciPlayParms; mciPlayParms.dwFrom=0; /从文件开始处开始播放 mciSendCommand(m_MCIDeviceID,MCI_PLAY,MCI_FROM, (DWORD)(LPVOID) 7、在程序退出时停止播放并关闭 MCI 设备用 ClassWizard 为 CMyDlg 类添加 WM_DESTROY 消息,该消息映射函数能使程 序退出时停止声音文件的播放并关闭 MCI 设备。 void CMyDlg:OnDestroy() CDialog:OnDestroy(); mciSendCommand(m_MCIDeviceID,MCI_STOP,MCI_WAIT,NULL); /停止播放 mciSendCommand(m_MCIDeviceID,MCI_CLOSE,MCI_WAIT,NULL); /关闭 MCI 设备 (8)编译并运行程序,在单击“播放”按钮时,程序将播放声音;当单击“退出”按 钮或单击窗口的关闭按钮时,声音播放会立即停止。72 MCI(媒体控制接口)(媒体控制接口) 媒体控制接口(Media Control Interface)为 Windows 程序提供了在高层次上控制 媒体设备接口的能力。程序不必关心具体设备,就可以对激光唱机(CD)、视盘机、波 形音频设备、视频播放设备和 MIDI 设备等媒体设备进行控制。对于程序员来说,可以3把 MCI 理解为设备面板上的一排按钮,通过选择不同的按键(发送不同的 MCI 命令)就可以让设备完成各种功能,而不必关心设备内部实现。例如,对于 play 按键,视盘机 和 CD 机有不同的反应(一个是播放视频,一个是播放音频),而对用户来说只需要按同一 按钮。利用 MCI 控制多媒体设备分为打开、使用和关闭设备三个过程。721 MFC 设备类型设备类型设备类型是指响应一组共用命令的一类 MCI 设备。表 7.1 列出了 MFC 设备类型。表表 7. 1 MCI 设设 备备 类类 型型设备类型 说明 设备描述 设备驱动程序 animation 动画播放设备 MCI_DEVICE_ANIMATION cdaudio CD 音频设备,如激光唱机 MCI_DEVICE_CD_AUDIO MCICDA.DRVdat 数字音频磁带机 MCI_DEVICE_DATdigitalvideo 数字视频设备 MCI_DEVICE_DIGITAL_VIDEOother 未定义的 MCI 设备 MCI_DEVICE_OTHERoverlay 窗口中的模拟设备 MCI_DEVICE_OVERLAYscanner 图形扫描设备 MCI_DEVICE_SCANNERsequencer MIDI 设备 MCI_DEVICE_SEQUENCER MCISEQ.DRVvcr 录象机设备 MCI_DEVICE_VCRvideodisc 影碟播放设备 MCI_DEVICE_VIDEODISK MCIPIONR.DRVwaveaudio 波形音频设备 MCI_DEVICE_WAVEAUDIO MCIWAVE.DRVmmmovie 多媒体影片播放机 MCIMMP.DRV所有设备 MCI_ALL_DEVICE_IDavivideo 视频音频交叉设备722 MCI 命令与函数命令与函数 应用程序通过 MCI 设备发送命令来控制 MCI 设备。 1、MCI 命令命令MCI 发送命令有 2 种方法,一是调用 MCI 函数 mciSendString(),向 MCI 发送命令 字符串,二是调用 MCI 函数 mciSendCommand()函数,向 MCI 发送命令消息,如表 7.2 所 示。 2、MCI 函数函数所有的 MCI 函数名都是以 mci 为前缀,函数原型在 MMSYSTEM.H 中声明。主要 的 MCI 函数如表 7.3 所示。 3、高级音频函数、高级音频函数Windows 提供了 3 个播放声音的高级音频函数,它们是:MessageBeep()、 PlaySound() 和 sndPlaySound()。这 3 个函数可以满足播放波形声音的一般需要,但他们播放的 WAVE 文件(波形声音文件)的大小不能超过 100KB,如果要播放较大的 WAVE 文件,4则应该使用 MCI(媒体控制接口) 。表表 7. 2 MCI 命令列表命令列表命令消息 命令字符串 命令说明 命令类型MCI_SYSINFO SYSINFO 返回有关 MCI 设备的信息MCI_BREAK BREAK 为一个指定的 MCI 设备设置一个终止键 系统命令MCI_SOUND SOUND 播放 Windows 指定的系统声音MCI_CLOSE CLOSE 关闭一个 MCI 设备MCI_GETDEVCAPS GETDEVCAPS 获得一个 MCI 设备的性能参数MCI_INFO INFO 从一个 MCI 设备得到有关的信息 通用命令MCI_OPEN OPEN 初始化一个 MCI 设备MCI_STATUS STATUS 从 MCI 设备返回有关的状态MCI_LOAD LOAD 从一个磁盘文件中加载数据MCI_PAUSE PAUSE 暂停播放MCI_PLAY PLAY 开始播放MCI_RECORD RECORD 开始记录数据MCI_RESUME RESUME 重新开始播放或录音 可选命令MCI_SAVE SAVE 将数据存储到磁盘文件中MCI_SEEK SEEK 向前或向后检索MCI_SET SET 设置设备信息MCI_SYOP STOP 停止播放或记录表表 7. 3 常用的常用的 MCI 函数函数函数名 功能 类型mciSendCommand 发送命令消息mciGetDeviceID 获得 MCI 设备的 ID 向 MCI 发送命令消息函数mciSetYieldProc 设定回调函数 mciGetYieldProc 获得回调函数mciSendString 发送命令字符串 向 MCI 发送命令字串函数mciGetErrorString 获得当前 MCI 错误的字符串描述 公用函数(1)MessageBeep()函数该函数主要用来播放系统报警声音。系统报警声音是由用户在控制面板中的声音 (Sounds)程序中定义的,或者在 WIN.INI 的sounds段中指定。该函数的原型为: BOOL MessageBeep(UINT uType);5参 数:uType 说明了声音的类型,如表 7.4 所示。若函数调用成功则返回 TRUE。 MessageBeep()只能用来播放少数定义的声音,如果程序需要播放波形音频文件(*.WAV 文件)或音频资源,就需要使用 PlaySound()或 sndPlaySound()函数。表
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号