MFC基于Window Media Player的多媒体播放器

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,有机会的自己试一下

调试




鼠标移动到最下面是出现进度条和其他按钮



猜你喜欢

转载自blog.csdn.net/qq_33012981/article/details/80713913