- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验8 题1与题2的具体步骤
编写代码实现制作一个音频文件播放器
创建一个基于对话框的工程,工程名为ex123。在第二步的please enter a title for your dialog项中输入对话框标题:“MyWAVPlayer”。
为工程添加多媒体组件。选择菜单:工程—添加到工程—Components and Controls菜单项,在弹出的Components and Controls Gallery对话框中双击Visual C++ Components 文件夹,然后选择Windows Multimedia library项,按Insert按钮:在弹出的对话框中按“确定”按钮,在继续弹出的一个消息框中按“是”按钮,则多媒体组件被加入到当前工程中。选择Components and Controls Gallery对话框中的关闭按钮,关闭该对话框。
定制对话框。将IDD_EX123_DIALOG对话框(MyWAVPlayer)中的静态文本控件以及“取消”按钮控件删除。将“确定”按钮的标题改为“关机”。新添3个按钮控件,其ID和标题分别设置如下。
按钮 ID值 Caption 播放按钮 IDC_BUTTON_PLAY 播放 停止按钮 IDC_BUTTON_STOP 停止 打开按钮 IDC_BUTTON_OPEN 打开
为对话框类添加3个成员变量,并在构造函数中对它们进行初始化。3个成员变量分别用来表示当前状态为播放、暂停状态和设备ID,如下:
变量类型 变量名 访问类型 BOOL m_bIsPlaying protected BOOL m_bIsPause protected MCIDEVICEID m_MCIDeviceID protected 构造函数中的初始化代码:
CEx123Dlg::CEx123Dlg(CWnd* pParent /*=NULL*/)
: CDialog(CEx123Dlg::IDD, pParent)
{
m_hIcon = AfxGetApp()-LoadIcon(IDR_MAINFRAME);
m_bIsPause=FALSE;
m_bIsPlaying=FALSE;
m_MCIDeviceID=0;
}
为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 Member Function;添加成员函数类型为viod,函数描述为:ShowMCIError(DWORD dwError);访问方式为:private。函数代码内容为:
void CEx123Dlg::ShowMCIError(DWORD dwError)
{
char szErrorBuf[MAXERRORLENGTH];
MessageBeep(MB_ICONEXCLAMATION);
if(mciGetErrorString(dwError,(LPSTR)szErrorBuf,MAXERRORLENGTH))
MessageBox(szErrorBuf,MCI错误,MB_ICONEXCLAMATION);
else
MessageBox(未知错误!,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_msg HCURSOR OnQueryDragIcon();
afx_msg void OnDestroy();
afx_msg LRESULT
文档评论(0)