1、5. 在“文件”菜单下有一个虚方框,表示要新建的菜单项。在“C标题”编辑框中输入:打开(&O),在ID编辑框中输入:ID_FILEOPEN(当“O弹出”检查框未选中时,必须输入ID)。另外,可根据需要在“M提示”编辑框中输入一串字符,提示该菜单选项功能。当光标停在该菜单选项上时,提示字符串显示在应用程序主窗口的状态条中。6. 类似步骤5)、6),按下表6-1内容,建立完整的菜单。表6-1 媒体播放器的各菜单项属性顶层菜单项子菜单项ID号F)O)ID_FILEOPEN关闭(&C)ID_FILECLOSE具有Separator样式的菜单分隔条退出(&X)ID_FILEEXIT播放(&P)开始(&S
2、)ID_PLAYSTART暂停(&ID_PLAYPAUSE停止(&T)ID_PLAYSTOP视频(&V)原始大小(&ID_VIDEO1X原始大小的2倍(&D)ID_VIDEO2X音频(&A)调节音量(&ID_AUDEOVOLUME调节左右声道平衡(&B)ID_AUDEOBALANCE帮助(&H)关于 播放器(&ID_HELPABOUT7. 给新建的菜单连接一个类 将鼠标移至编辑状态的菜单上,单击右键,弹出快捷菜单,选择ClassWizard命令。在显示ClassWizard窗口的同时,弹出一个Adding a Class对话框,该对话框询问是增加一个新类,还是选择一个已经存在的类进行连接。因为
3、我们要连接的类是与Player应用程序相关联的对话框类CPlayerDlg,此类已经存在,所以选择第二项。 单击Adding a Class对话框中的OK按钮,显示一个Select Class(选择类)对话框窗口,在Class list列表中选择CPlayerDlg,单击Select按钮,确定所选项。 单击“确定”按钮,关闭ClassWizard窗口。现在,菜单ID_PLAYER_MENU已经和CPlayerDlg类连接起来了。8. 连接菜单和应用程序的主窗口 在工作区中单击Resource View选项卡,展开Dialog资源组,双击 IDD_PLAYER_DIALOG。在右边工作台中显示的
4、IDD_PLAYER_DIALOG对话框的任何一个空白区域,单击鼠标右键,在弹出的菜单中选择Properties项,随后弹出Dialog Properties对话框。 在Dialog Properties对话框中有一个“M菜单”选项。单击“M菜单”组合框的箭头,在弹出的列表中选择IDR_MENU9. 选择File|Save命令,保存所有工作。现在,对已存在的程序进行编译、运行623在对话框中添加ActiveMovie控件在对话框中单击鼠标右键,选择Insert ActiveX Control命令。在弹出的对话框中选择ActiveMovieControl Object,并按“确定”按钮。10.
5、为新添加的ActiveMovie控件确定ID号,为IDC_AMOVIE。11. 为IDC_AMOVIE映射一个成员变量在ActiveMovie控件上单击右键,在弹出菜单中选择ClassWizard,在弹出的MFC ClassWizard对话框中选择Member Variables选项卡,按下Add Variable按钮,弹出对话框。在随后弹出对话框中,按下“OK”按钮,以确定新建类:CActiveMovie。在弹出的Add Member Variable对话框中确定与IDC_AMOVIE相映射的成员变量:m_AMovie。624 完成“文件”菜单的各子菜单功能以下的函数基本上是通过MFC的消息
6、映射机制实现12. 实现“打开”菜单功能 为“打开”菜单添加消息响应函数:OnFileopen()。 OnFileopen()函数的代码如下:void CTLY2412Dlg:OnFileopen() / TODO: Add your command handler code here/文件类型过滤char szFileFilter=Mp3 File(*.mp3)|*.mp3|Wma File(*.wma)|*.wma|Video File(*.dat)|*.dat|Wave File(*.wav)|*.wav|AVI File(*.avi)|*.avi|Movie File(*.mov)|*
7、.mov|Media File(*.mmm)|*.mmm|Mid File(*.mid;*,rmi)|*.mid;*.rmi|MPEG File(*.mpeg)|*.mpeg|All File(*.*)|*.*|;CTLY2412Dlg dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,szFileFilter);if(dlg.DoModal()=IDOK)CString PathName=dlg.GetPathName();PathName.MakeUpper();m_AMovie.SetFileName(PathName);13. 实现“关闭”菜单功能 为“关闭”菜单
8、添加消息响应函数:OnFileclose()。 OnFileclose()函数的代码如下:OnFileclose() m_AMovie.SetFileName();14. 实现“退出”菜单功能 为“退出”菜单添加消息响应函数:OnFileexit()。 OnFileexit()函数的代码如下:OnFileexit() OnCancel(); 625 完成“播放”菜单的各子菜单功能1实现“开始”菜单功能 为“开始”菜单添加消息响应函数:OnPlaystart()。 OnPlaystart()函数的代码如下:OnPlaystart() m_AMovie.Run();SetTimer(0,20,NU
9、LL);/设置定时器2实现“暂停”菜单功能 为“暂停”菜单添加消息响应函数:OnPlaypause()。 OnPlaypause()函数的代码如下:OnPlaypause() m_AMovie.Pause();3实现“停止”菜单功能 为“停止”菜单添加消息响应函数:OnPlaystop()。 OnPlaystop()函数的代码如下:OnPlaystop() m_AMovie.Stop();KillTimer(0);/关掉定时器4当 ActiveMovie 控件完成媒体文件的加载时自动播放该文件,代码如下:OnOpenCompleteAmovie() 626 完成“视频”菜单的各子菜单功能1实现
10、“原始大小”菜单功能15. 编写代码完善OnInitDialog(),完整代码如下:BOOL CTLY2412Dlg:OnInitDialog()CDialog:OnInitDialog();SetIcon(m_hIcon, TRUE);SetIcon(m_hIcon, FALSE);/ 设置 ActiveMovie 控件的初始文件为空/ 改变窗口的大小以适应 ActiveMovie 控件的大小MoveMovieWindow();return TRUE;16. 添加CTLY2412Dlg类的成员函数MoveMovieWindow(),实现改变对话框大小以适应 ActiveMovie 控件的大小
11、,其代码如下:MoveMovieWindow()CRect rc1, rc2, rc3;/ 得到 ActiveMovie 控件的大小m_AMovie.GetWindowRect(rc1);/ 保证对话框客户区的宽不小于 300 像素,高不小于 225 像素if (rc1.Width()300 | rc1.Height()GetCurrentState()!=-1) DoModal(); else MessageBox(音频设备尚未加载,请先打开一个媒体文件。5通过MFC建立ON_WM_HSCROLL( )的消息映射并添加下列代码/ 用户拖动或点击滑块控件时,滑块控件的变化立即作用于 Activ
12、eMovie 控件OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) CSliderCtrl *pSlider=(CSliderCtrl *)pScrollBar;int nVolume=pSlider-GetPos();m_pAMovie-SetVolume(nVolume);OnHScroll(nSBCode, nPos, pScrollBar);6用MFC为该类添加成员函数virtual BOOL OnInitDialog();BOOL CVolumeDlg:OnInitDialog() / 设置音量滑块的最小值和最大值、
13、标度和当前位置等m_sld.SetRange(-10000, 0);m_sld.SetTicFreq(1000);m_sld.SetLineSize(200);m_sld.SetPageSize(1000);/ 以 ActiveMovie 控件的当前音量作为音量滑块的当前位置m_sld.SetPos(m_pAMovie-GetVolume();7为“调节音量”菜单添加消息响应函数:OnAudeovolume()。OnAudeovolume()函数的代码如下:OnAudeovolume() CVolumeDlg dlgVolum;dlgVolum.SetVolum(&m_AMovie);在该类的头文件里加上#include activemovie3.h和#include VolumeDlg.h2实现“调节左右声道平衡”菜单功能(1)设计“调节左右声道平衡”对话框1 如图6-16所示设计“调节左右声道平衡”对话框。2 由ClassWizard创建的新类CBalanceDlg封装了该对话框。同前面的对话框 IDD_VOLUME相类似,CBalanceDlg定义
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2