欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    【教学课件】第10章媒体控制接口.ppt

    • 资源ID:5657623       资源大小:389.47KB        全文页数:12页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    【教学课件】第10章媒体控制接口.ppt

    第10章媒体控制接口,10.1 MCI设备类型 10.2 MCI编程步骤 10.3使用MCIWnd窗口类,10.1 MCI设备类型,媒体控制接口允许控制两类设备:第一类为简单设备,是指那些不需要文件的设备,如CD音频播放设备;第二类为复合设备,是那些需要文件的设备,如数字视频及波形音频设备等。表列出了目前已定义的设备的标识符。,10.2 MCI编程步骤,打开设备 MCI为不同的多媒体设备打开提供相应的数据结构类型。若不想使用设备中特定的参数数据,则可使用统一的MCI_OPEN_PARMS结构,原型:typedef struct DWORDdwCallback;/低字节用于MCI_NOTIFY的窗口句柄MCIDEVICEID wDeviceID;/返回的设备标识符 LPCSTR lpstrDeviceType;/MCI设备的类型LPCSTR lpstrElementName;/设备元素 LPCSTR lpstrAlias;/可选的设备别名 MCI_OPEN_PARMS;打开多媒体设备的过程:定义一个MCI_OPEN_PARMS结构类型变量,给结构变量中的相应参数赋值,调用mciSendCommand向设备发送MCI_OPEN命令消息,成功调用时,可获得相应的设备标识符。例如,下面的代码是打开波形音频设备:WORD wDeviceID;/MCI设备IDCString fileName;/波形文件名.MCI_OPEN_PARMS openParms;/MCI设备打开参数openParms.lpstrDeviceType=waveaudio;/波形音频设备openParms.lpstrElementName=fileName;if(mciSendCommand(NULL,MCI_OPEN,MCI_OPEN_ELEMENT|MCI_OPEN_TYPE,(DWORD)(LPVOID).,10.2 MCI编程步骤,设置或获取设备信息使用MCI_SET和MCI_STATUS命令可以用来设置和获取设备信息,在用函数mciSendCommand发送命令时,使用相应的MCI_SET_PARMS和MCI_STATUS_PARMS结构。原型:typedef struct DWORD dwCallback;/低字节用于MCI_NOTIFY的窗口句柄 DWORD dwTimeFormat;/时间格式 DWORD dwAudio;/输出声道 MCI_SET_PARMS;typedef struct DWORD dwCallback;/低字节用于MCI_NOTIFY的窗口句柄DWORD dwReturn;/要获取的设备信息DWORD dwItem;/需要获取的信息项 DWORD dwTrack;/曲目的长度或曲目号 MCI_STATUS_PARMS;例如,下面的代码是将波形音频设备的时间格式设成毫秒:MCI_SET_PARMS setParms;setParms.dwTimeFormat=MCI_FORMAT_MILLISECONDS;if(mciSendCommand(wDeviceID,MCI_SET,MCI_SET_TIME_FORMAT,(DWORD)(LPVOID),10.2 MCI编程步骤,播放设备使用MCI_PLAY命令可以使设备播放多媒体文件,并在用函数mciSendCommand发送命令时,使用相应的MCI_PLAY_PARMS结构,其原型如下:typedef struct DWORD dwCallback;/低字节用于MCI_NOTIFY的窗口句柄DWORD dwFrom;/播放的起点位置DWORD dwTo;/播放的终点位置 MCI_PLAY_PARMS;例如,下面的代码是播放波形音频设备:MCI_PLAY_PARMS playParms;/定位到开始位置mciSendCommand(wDeviceID,MCI_SEEK,MCI_SEEK_TO_START,NULL);/播放设备if(mciSendCommand(wDeviceID,MCI_PLAY,NULL,(DWORD)(LPVOID),10.2 MCI编程步骤,例如,若接收MM_MCINOTIFY消息的窗口是一个对话框CMyDlg,则添加消息处理的过程如下:(1)切换到项目工作区窗口的ClassView页面,右击CMyDlg类,选择快捷菜单中的“Add Member Function.”命令。为CMyDlg类添加保护型的成员函数,原型:protected:LRESULT OnMCINotify(WPARAM wParam,LPARAM lParam);(2)在类CMyDlg的消息入口处,添加下列消息宏指令:BEGIN_MESSAGE_MAP(CMyDlg,CDialog)/AFX_MSG_MAP(CMyDlg)./AFX_MSG_MAPON_MESSAGE(MM_MCINOTIFY,OnMCINotify)END_MESSAGE_MAP()(3)编写CMyDlg:OnMCINotify函数代码:LRESULT CMyDlg:OnMCINotify(WPARAM wParam,LPARAM lParam).return FALSE;(4)关闭设备使用MCI_STOP和MCI_CLOSE命令可以分别用来停止播放和关闭设备。不需要设置或返回附加的信息,因此不必考虑相应的MCI_GENERIC_PARMS结构。,10.3使用MCIWnd窗口类,MCIWnd是一个控制多媒体设备的窗口类。若在应用程序中使用MCIWnd窗口类,必须在调用MCIWnd函数所在的源文件的前面添加vfw.h的头文件,以及编译时加入vfw32.lib库或在程序中加入下列语句:#pragma comment(lib,vfw32.lib)在MCIWnd窗口类中,虽然它所提供的函数并不多,但是它所提供的宏却非常多,并且基本上与MCI的底层功能相对应。在应用程序中使用MCIWnd窗口类的一般步骤是:(1)在程序中调用MCIWndRegisterClass函数注册MCI窗口类,以便以后用CreateWindow或CreateWindowEx函数创建窗口,或者直接调用函数MCIWndCreate创建窗口。(2)获得相应的窗口句柄后,就可调用MCIWndOpen宏来打开设备。(3)由于MCIWnd窗口提供了相应的媒体控制按钮,因而不需要用户编写额外的代码。(4)但作为技巧,用户还应该跟踪MCIWnd窗口的一些消息(如MCIWNDM_ NOTIFYSIZE)来调整MCIWnd窗口。,10.3使用MCIWnd窗口类,例Ex_MCI 利用MCIWnd窗口类在多文档应用程序中添加一个多媒体播放器。(1)用MFC AppWizard(exe)创建一个多文档项目Ex_MCI,单击Finish。(2)在StdAfx.h中放入包含文件使得应用程序能使用所有的多媒体代码。由于项目中的每一个文件已经包含了StdAfx.h,所以在其他地方就不必再包含这些多媒体文件。.#endif/_AFX_NO_AFXCMN_SUPPORT#include#pragma comment(lib,vfw32.lib).(3)在CEx_MCIApp:InitInstance函数,使用MCIWndRegisterClass函数注册MCI窗口类。虽然,后面的创建窗口是直接调用函数MCIWndCreate来进行的,但还应该保证应用程序的运行系统拥有并支持MCIWnd窗口类。BOOL CEx_MCIApp:InitInstance()if(!MCIWndRegisterClass()return FALSE;AfxEnableControlContainer();.(4)在Ex_MCIView类中添加一个公共成员变量用来标识嵌入的MCIWnd窗口句柄。public:CEx_MCIDoc*GetDocument();HWND m_hMyMCIWnd;.,10.3使用MCIWnd窗口类,(5)用ClassWizard为Ex_MCIView类中添加OnInitialUpdate消息处理函数,增加代码:void CEx_MCIView:OnInitialUpdate()CView:OnInitialUpdate();m_hMyMCIWnd=MCIWndCreate(m_hWnd,AfxGetInstanceHandle(),MCIWNDF_NOTIFYSIZE|MCIWNDF_NOERRORDLG|WS_CHILD|WS_VISIBLE,NULL);if(m_hMyMCIWnd=NULL)return;const CString,10.3使用MCIWnd窗口类,(7)要添加处理该消息的代码来调整窗口的大小以便能及时更新显示。需要手动进行。在Ex_MCIView.h文件中的消息声明处添加下列代码:/Generated message map functionsprotected:/AFX_MSG(CEx_MCIView)./AFX_MSGafx_msg LONG OnNotifySize(UINT wParam,LONG lParam);DECLARE_MESSAGE_MAP()(8)在Ex_MCIView.cpp的消息入口处添加下列代码:BEGIN_MESSAGE_MAP(CEx_MCIView,CView)/AFX_MSG_MAP(CEx_MCIView).ON_MESSAGE(MCIWNDM_NOTIFYSIZE,OnNotifySize)/AFX_MSG_MAP/Standard printing commandsON_COMMAND(ID_FILE_PRINT,CView:OnFilePrint)ON_COMMAND(ID_FILE_PRINT_DIRECT,CView:OnFilePrint)ON_COMMAND(ID_FILE_PRINT_PREVIEW,CView:OnFilePrintPreview)END_MESSAGE_MAP(),10.3使用MCIWnd窗口类,(9)为CEx_MCIView类添加该消息的处理函数OnNotifySize,代码:LONG CEx_MCIView:OnNotifySize(UINT wParam,LONG lParam)CRect rc;CFrameWnd*pParent=GetParentFrame();if(m_hMyMCIWnd):GetWindowRect(m_hMyMCIWnd,rc);pParent-CalcWindowRect(rc,CWnd:adjustBorder);CSize size(rc.Width(),rc.Height();if(GetExStyle(),10.3使用MCIWnd窗口类,(10)编译并运行。载入一个AVI文件(或其他媒体文件)并单击播放()按钮,如图。,图10.1 Ex_MCI运行结果,

    注意事项

    本文(【教学课件】第10章媒体控制接口.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开