基于MFC的简易的Windows播放器

  • 基于MFC的简易的Windows播放器,实现简单的音频视频的播放功能。利用AppWizard创建MFC(exe)创建SDI应用程序,项目文件名为MediaPlayer。
    基于MFC的简易的Windows播放器_第1张图片
     
     在MFC应用程序向导-步骤 1对话框中选择:单文档(S)选项,其余的采用默认选项
    基于MFC的简易的Windows播放器_第2张图片
     单击主菜单中Insert菜单,选择Resource菜单项,在弹出的Insert Resource对话框的Resource type列表框中选择Dialog,然后单击右边的按钮新建(N)
    基于MFC的简易的Windows播放器_第3张图片
     
    再选择project/add to project /components and controls 如图:
    基于MFC的简易的Windows播放器_第4张图片
    选择registered  activex controls后找到windows media player选中
    基于MFC的简易的Windows播放器_第5张图片
    加入CWMPPlayer4类:
    基于MFC的简易的Windows播放器_第6张图片
    控件里多了一项,拖控件到对话框:
    \       基于MFC的简易的Windows播放器_第7张图片
    为CMyPlayMediaView类添加如下成员:

    view source print ?
    01. class CWMPPlayer4;//声明类 
    02. class CMyPlayMediaView : public CView 
    03.
    04. protected// create from serialization only 
    05. CMyPlayMediaView(); 
    06. DECLARE_DYNCREATE(CMyPlayMediaView) 
    07.  
    08. // Attributes 
    09. public
    10. CMyPlayMediaDoc* GetDocument(); 
    11. CWMPPlayer4     * m_pPlayer;// 播放器 
    12. CString         m_strFile;// 文件名 
    13. BOOL            m_bPaused;  // 记录暂停状态 
    14. … 
    15. }

    初始化播放器,修改构造函数和析构函数如下:

     

    view source print ?
    01. CMyPlayMediaView::CMyPlayMediaView() 
    02.
    03. m_pPlayer = new CWMPPlayer4; 
    04. m_bPaused = FALSE; 
    05.
    06.  
    07. CMyPlayMediaView::~CMyPlayMediaView() 
    08.
    09. delete m_pPlayer; 
    10. }

    向MediaPlayerView.cpp中添加如下头文件

     

    view source print ?
    1. #include "wmpplayer4.h" 
    2. #include "MediaPlayerView.h" 
    3. #include "wmpcontrols.h" 
    4. #include "wmpsettings.h" 

    创建播放器,为视图添加WM_CREATE消息的响应,实现如下:

     

    view source print ?
    01. int CMyPlayMediaView::OnCreate(LPCREATESTRUCT lpCreateStruct)  
    02.  
    03.
    04.  
    05. if (CView::OnCreate(lpCreateStruct) == -1) 
    06.  
    07. return -1; 
    08.  
    09. HCURSOR hCursor=::LoadCursor(NULL, IDC_ARROW); // 获得标准箭头鼠标指针 
    10.  
    11. CRect rect;  
    12.  
    13. GetClientRect(rect); // 获得客户区大小  
    14.  
    15. // 创建播放器 
    16.  
    17. m_pPlayer->Create( 
    18.  
    19. AfxRegisterWndClass(CS_HREDRAW | CS_VREDRAW |  
    20.  
    21. CS_DBLCLKS | CS_PARENTDC, hCursor, 0, 0), 
    22.  
    23. NULL,  
    24.  
    25. WS_VISIBLE|WS_CHILD,  
    26.  
    27. rect, this, 0);  
    28.  
    29. m_pPlayer->ShowWindow(SW_HIDE);     // 隐藏控制面板 
    30.  
    31. return 0; 
    32. }

    设计播放器控制菜单如下表所示。 www.it165.net
    播放器控制菜单属性



菜单样式 ID Caption Pop-up

基于MFC的简易的Windows播放器_第8张图片
  操作
ID_OPER_OPEN 打开文件…  
ID_OPER_PLAY 播放  
ID_OPER_PAUSE 暂停/继续  
ID_OPER_STOP 停止  

分别实现菜单中的功能,用MFCClasswizard添加到视图类里:

基于MFC的简易的Windows播放器_第9张图片


 

view source print ?
01. void CMyPlayMediaView::OnOperOpen()  
02.  
03.
04.  
05. // 只允许打开多媒体文件  
06.  
07. static char BASED_CODE szFilter[] =  
08.  
09. "视频文件 (*.avi;*.mpg;*.mpeg)|*.avi;*.mpg;*.mpeg|"
10.  
11. "音频文件 (*.wav;*.mp3)|*.wav;*.mp3|"
12.  
13. CFileDialog fileDlg(TRUE, NULL, NULL, OFN_HIDEREADONLY, szFilter);  
14.  
15. if(fileDlg.DoModal() == IDOK)  
16. m_strFile = fileDlg.GetPathName(); // 获得文件名  
17.  
18.
19.  
20.  
21. void CMyPlayMediaView::OnOperPause()  
22.  
23.
24.  
25. // 判断是否处于暂停状态 
26.  
27. if(m_bPaused) 
28.  
29.
30.  
31. m_bPaused = FALSE; 
32.  
33. m_pPlayer->GetControls().play(); 
34.  
35.
36.  
37. else
38.  
39.
40.  
41. m_bPaused = TRUE; 
42.  
43. m_pPlayer->GetControls().pause(); 
44.  
45.
46.  
47.
48.  
49.  
50. void CMyPlayMediaView::OnOperPlay()  
51.  
52.
53.  
54. m_bPaused = FALSE; 
55.  
56. m_pPlayer->GetControls().stop(); 
57.  
58. m_pPlayer->GetSettings().SetAutoStart(TRUE); 
59.  
60. m_pPlayer->SetUrl(m_strFile); 
61.  
62.
63.  
64.  
65. void CMyPlayMediaView::OnOperStop()  
66.  
67.
68.  
69. m_bPaused = FALSE; 
70.  
71. m_pPlayer->GetControls().stop(); 
72.  
73.

此时运行程序,播放器始终以所播放内容的默认尺寸来播放,可以调整播放器使用窗口尺寸来播放。为视图添加WM_SIZE消息响应

 

view source print ?
1. void CMyPlayMediaView::OnSize(UINT nType, int cx, int cy)  
2.
3. CView::OnSize(nType, cx, cy); 
4. CRect rect;  
5. GetClientRect(rect);     
6. m_pPlayer->MoveWindow(rect);     
7. }

到这里就完成了初始化界面

 

基于MFC的简易的Windows播放器_第10张图片

打开文件:

基于MFC的简易的Windows播放器_第11张图片


实例代码: http://codes.it165.net/html/201212/15.html

你可能感兴趣的:(C++)