1.建立一个基于对话框的程序,命名为Video。
2.添加activeX控件Window Media Player,ID为IDC_OCX1,添加一个Edit控件,命名IDC_EDIT_FILENAME;
右键单击
点选择项
选COM组件,在列表中找到Window Media Player勾选,添加到工具箱
工具箱中多了一个Window media Player
3.为该控件添加实现类;
4.在VideoDlg.h中添加#include“CWMPPlayer.h”
然后添加成员变量
我们没有COcx1类,将这个类改为CWMPPlayer4,如下
4.接下来我们开始设置菜单了
为这个菜单添加事件响应
代码如下
void CVideoDlg::OnBnClickedOpen(){// TODO: 在此添加控件通知处理程序代码CString m_str=_T("(*.avi)|*.avi");CFileDialog FileDlg(TRUE, NULL, L"*.*", OFN_FILEMUSTEXIST, m_str);//打开文件if (FileDlg.DoModal() == IDOK){m_PlayVideo.put_URL(FileDlg.GetPathName());//播放文件m_FileName.SetWindowTextW(FileDlg.GetPathName());//设置编辑框文本}}
这样一个简单的播放器就实现了,但是有很多不完善的地方,接下来,我们添加一些其他的功能
5.添加WM_ERASEBKGND消息和WM_SIZE消息
我们要让这个控件能根据窗口大小改变自己的大小
在CVideoDlg类中添加公有成员
CRect m_rect;
在WM_SIZE消息的映射函数中添加如下代码
void CVideoDlg::OnSize(UINT nType, int cx, int cy){CDialogEx::OnSize(nType, cx, cy);// TODO: 在此处添加消息处理程序代码GetClientRect(m_rect);//获取窗口客户区大小}
在WM_ERASEBKGND消息的映射函数中添加如下代码
BOOL CVideoDlg::OnEraseBkgnd(CDC* pDC){// TODO: 在此添加消息处理程序代码和/或调用默认值//调整两控件的位置m_PlayVideo.MoveWindow(m_rect.left, m_rect.top + 30, m_rect.right, m_rect.bottom - 30);m_FileName.MoveWindow(m_rect.left, m_rect.top , m_rect.right,30);return false;}
大功告成了,成功实现预期目标
6.添加功能改变控件风格
添加GDI+支持,这个我不说了,自己看前面的博客
在CWMPPlayer4类中添加共有成员
RectF rect;
添加WM_MOUSEMOVE消息
void CVideoDlg::OnMouseMove(UINT nFlags, CPoint point){// TODO: 在此添加消息处理程序代码和/或调用默认值PointF pt(static_cast<float>(point.x), static_cast<float>(point.y));if (rect.Contains(pt)){m_PlayVideo.put_uiMode(_T("Full"));}else{m_PlayVideo.put_uiMode(_T("None"));}CDialogEx::OnMouseMove(nFlags, point);}
四种风格分别为Full,None,Mini,Invisible,有机会的自己试一下
调试
鼠标移动到最下面是出现进度条和其他按钮