实验8题1与题2的具体步骤

上传人:壹****1 文档编号:563794064 上传时间:2023-08-13 格式:DOC 页数:9 大小:56.51KB
返回 下载 相关 举报
实验8题1与题2的具体步骤_第1页
第1页 / 共9页
实验8题1与题2的具体步骤_第2页
第2页 / 共9页
实验8题1与题2的具体步骤_第3页
第3页 / 共9页
实验8题1与题2的具体步骤_第4页
第4页 / 共9页
实验8题1与题2的具体步骤_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《实验8题1与题2的具体步骤》由会员分享,可在线阅读,更多相关《实验8题1与题2的具体步骤(9页珍藏版)》请在金锄头文库上搜索。

1、1、 编写代码实现制作一个音频文件播放器(1) 创建一个基于对话框的工程,工程名为ex123。在第二步的please enter a title for your dialog项中输入对话框标题:“MyWAVPlayer”。(2) 为工程添加多媒体组件。选择菜单:工程添加到工程Components and Controls菜单项,在弹出的Components and Controls Gallery对话框中双击Visual C+ Components 文件夹,然后选择Windows Multimedia library项,按Insert按钮:在弹出的对话框中按“确定”按钮,在继续弹出的一个消息

2、框中按“是”按钮,则多媒体组件被加入到当前工程中。选择Components and Controls Gallery对话框中的关闭按钮,关闭该对话框。(3) 定制对话框。将IDD_EX123_DIALOG对话框(MyWAVPlayer)中的静态文本控件以及“取消”按钮控件删除。将“确定”按钮的标题改为“关机”。新添3个按钮控件,其ID和标题分别设置如下。 按钮ID值Caption播放按钮IDC_BUTTON_PLAY播放停止按钮IDC_BUTTON_STOP停止打开按钮IDC_BUTTON_OPEN打开 (4) 为对话框类添加3个成员变量,并在构造函数中对它们进行初始化。3个成员变量分别用来表

3、示当前状态为播放、暂停状态和设备ID,如下: 变量类型变量名访问类型BOOLm_bIsPlayingprotectedBOOLm_bIsPauseprotectedMCIDEVICEIDm_MCIDeviceIDprotected 构造函数中的初始化代码:CEx123Dlg:CEx123Dlg(CWnd* pParent /*=NULL*/): CDialog(CEx123Dlg:IDD, pParent)m_hIcon = AfxGetApp()-LoadIcon(IDR_MAINFRAME);m_bIsPause=FALSE;m_bIsPlaying=FALSE;m_MCIDeviceID

4、=0;(5) 为CEx123Dlg对话框类添加3个成员函数:1)利用类向导添加WM_DESTROY消息的处理函数,代码如下:void CEx123Dlg:OnDestroy() CDialog:OnDestroy();/退出程序前先停止声音播放,再关闭设备/这里忽略了错误处理mciSendCommand(m_MCIDeviceID,MCI_STOP,MCI_WAIT,NULL);mciSendCommand(m_MCIDeviceID,MCI_CLOSE,MCI_WAIT,NULL); 2)添加一个处理MCI错误的函数。在ClassView页面中,右键单击CEx123Dlg类,选择Add Me

5、mber Function;添加成员函数类型为viod,函数描述为:ShowMCIError(DWORD dwError);访问方式为:private。函数代码内容为:void CEx123Dlg:ShowMCIError(DWORD dwError)char szErrorBufMAXERRORLENGTH;MessageBeep(MB_ICONEXCLAMATION);if(mciGetErrorString(dwError,(LPSTR)szErrorBuf,MAXERRORLENGTH)MessageBox(szErrorBuf,MCI错误,MB_ICONEXCLAMATION);el

6、seMessageBox(未知错误!,MCI错误,MB_ICONEXCLAMATION); 3)添加MM_MCINOTIFY消息的消息映射和处理函数。由于类向导不支持该消息,必须手工进行添加,添加时不要忘记包括三项内容:函数原型、消息映射入口项和函数体。在ex123Dlg.h文件中添加消息函数原型的声明:class CEx123Dlg : public CDialog/省略部分代码virtual BOOL OnInitDialog();afx_msg void OnSysCommand(UINT nID, LPARAM lParam);afx_msg void OnPaint();afx_ms

7、g HCURSOR OnQueryDragIcon();afx_msg void OnDestroy();afx_msg LRESULT OnMciNotify(WPARAM wParam,LPARAM lParam);afx_msg void OnButtonOpen();afx_msg void OnButtonPlay();afx_msg void OnButtonStop();/AFX_MSGDECLARE_MESSAGE_MAP()private:void ShowMCIError(DWORD dwError);在ex123Dlg.cpp文件中添加消息映射项:/省略部分代码BEGIN

8、_MESSAGE_MAP(CEx123Dlg, CDialog)/AFX_MSG_MAP(CEx123Dlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_WM_DESTROY()/AFX_MSG_MAPON_MESSAGE(MM_MCINOTIFY,OnMciNotify)END_MESSAGE_MAP()添加的函数体内容如下:LRESULT CEx123Dlg:OnMciNotify(WPARAM wParam,LPARAM lParam)/如果一个文件播放完毕,则重置两个状态为FALSE/使得用户可以再次播放该文件if(wP

9、aram=MCI_NOTIFY_SUCCESSFUL)m_bIsPause=FALSE;m_bIsPlaying=FALSE;return 0;return -1;(6) 为“打开”、“播放”和“停止”3个按钮添加消息处理函数。用类向导分别为3个按钮添加BN_CLICKED消息处理函数如下:void CEx123Dlg:OnButtonOpen() CString filename;MCI_OPEN_PARMS mciOpenParms;DWORD dwError;/利用通用对话框打开一个WAV波形文件static char szFilter=波形音频文件(*.wav)|*.wav|;CFil

10、eDialog /(直接接下一行,两行合并为一行)dlg(TRUE,wav,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,szFilter);if(dlg.DoModal()=IDOK)filename=dlg.GetPathName();/得到用户选择的文件名if(m_bIsPlaying)/如果正在播放,则先关掉dwError=mciSendCommand(m_MCIDeviceID,MCI_CLOSE,0,NULL);if(dwError)ShowMCIError(dwError);return;mciOpenParms.lpstrDeviceTyp

11、e=waveaudio;mciOpenParms.lpstrElementName=filename;dwError=mciSendCommand(0,MCI_OPEN,MCI_OPEN_TYPE|MCI_OPEN_ELEMENT,(DWORD)(LPVOID)&mciOpenParms);/(以上两行合并为一行代码)/如果打不开音频设备则报告错误并返回if(dwError)ShowMCIError(dwError);return;/如果打开成功,则取得设备ID值并设置两个状态指示m_MCIDeviceID=mciOpenParms.wDeviceID;m_bIsPause=FALSE;m_b

12、IsPlaying=FALSE;void CEx123Dlg:OnButtonPlay() MCI_PLAY_PARMS mciPlayParms;DWORD dwError;if(!m_bIsPlaying)/处理MM_MCINOTIFY消息的窗口句柄mciPlayParms.dwCallback=(long)GetSafeHwnd();/从头开始播放文件mciPlayParms.dwFrom=0;dwError=mciSendCommand(m_MCIDeviceID,MCI_PLAY,MCI_FROM|MCI_NOTIFY,(DWORD)(LPVOID)&mciPlayParms);/(

13、两行合并为一行代码)/如果错误,则显示错误并返回if(dwError)ShowMCIError(dwError);return;if(m_bIsPlaying)if(!m_bIsPause)/若正在播放,先暂停dwError=mciSendCommand(m_MCIDeviceID,MCI_PAUSE,0,NULL);else/若现在处于暂停,则恢复放音dwError=mciSendCommand(m_MCIDeviceID,MCI_RESUME,0,NULL);if(dwError)/遇到错误返回ShowMCIError(dwError);return;m_bIsPause=!m_bIsPa

14、use;/切换放音/暂停状态m_bIsPlaying=TRUE;void CEx123Dlg:OnButtonStop() DWORD dwError;dwError=mciSendCommand(m_MCIDeviceID,MCI_STOP,MCI_WAIT,NULL);if(dwError)ShowMCIError(dwError);return;m_bIsPause=FALSE;m_bIsPlaying=FALSE;编译、链接并运行程序。当用户按下“打开”按钮时,弹出“打开”对话框,随意选定某波形文件(.wav)播放。“播放”按钮实现声音的暂停和继续播放。“停止”按钮可以停止播放。“关机”按钮则退出播放程序。2、 BMP位图显示程序(1) 新建一个MFC的SDI工程。名为ex124。(2) 在CEx124view类中添加两个public成员变量:BITMAPINFO* m_

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 试题/考题 > 初中试题/考题

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号