⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 avi_mp3.cpp

📁 一个本人学习期间写的播放音乐的代码,希望大家有用
💻 CPP
字号:
#include "StdAfx.h"
#include "avi_mp3.h"

CAvi_Mp3::CAvi_Mp3()
{
	HRESULT hr = CoInitialize(NULL);

	if (FAILED(hr))
	{
		return;
	}
	m_pGraph=NULL;
	m_pMediaControl=NULL;
	m_pMediaPosition=NULL;
}
void CAvi_Mp3::InitMp3()
{
	CoCreateInstance(CLSID_FilterGraph, NULL,
		CLSCTX_INPROC, IID_IGraphBuilder, (void**)&m_pGraph);
	m_pGraph->QueryInterface(IID_IMediaControl, (void**)&m_pMediaControl);
	m_pGraph->QueryInterface(IID_IMediaPosition, (void**)&m_pMediaPosition);
	m_Media=1;
}
void CAvi_Mp3::InitAvi()
{
	CoCreateInstance(CLSID_FilterGraph, NULL,
		CLSCTX_INPROC, IID_IGraphBuilder, (void**)&m_pGraph);
	m_pGraph->QueryInterface(IID_IMediaControl, (void**)&m_pMediaControl);
	m_pGraph->QueryInterface(IID_IMediaEvent,(void**)&m_pEvent);
	m_pGraph->QueryInterface(IID_IVideoWindow,(void**)&m_pVM);
	m_Media=2;
}
LRESULT CAvi_Mp3::PlayMedia(const char* szMediaFileName)
{
	WCHAR wstrSoundPath[MAX_PATH];
	MultiByteToWideChar(CP_ACP, 0, szMediaFileName, -1, wstrSoundPath, MAX_PATH);

	if(S_OK!= m_pGraph->RenderFile(wstrSoundPath, NULL))	//MustBe NULL
		MessageBox(NULL,"RenderFile()失败!","ERROR",MB_OK|MB_ICONERROR);
	//m_pGraph->RenderFile(L"C:\\\\a3_30.avi", NULL);
	if(m_Media==1)m_pMediaPosition->put_CurrentPosition(0);///Play mp3	
	m_pMediaControl->Run();
	return DS_OK;

}
LRESULT CAvi_Mp3::PlayInFullScreen(HWND hWnd)
{
	LONG iMode;
	static HWND hDrain=0;
	m_pVM->get_FullScreenMode(&iMode);
	if(iMode==OAFALSE)
	{
		m_pVM->get_MessageDrain((OAHWND*)&hDrain);
		m_pVM->put_MessageDrain((OAHWND)hWnd);
		iMode=OATRUE;
		m_pVM->put_FullScreenMode(iMode);

	} else
	{
		iMode=OAFALSE;
		m_pVM->put_FullScreenMode(iMode);
		m_pVM->put_MessageDrain((OAHWND)hDrain);
		m_pVM->SetWindowForeground(-1);

	}
	return DS_OK;
}
CAvi_Mp3::~CAvi_Mp3()
{
	/*if (m_pEvent)
	m_pEvent->Release();*/
	/*if (m_pVM)
	m_pVM->Release();*/
	if (m_pMediaPosition)
	{
		m_pMediaPosition->Release();
		m_pMediaPosition=NULL;
	}
	if (m_pMediaControl)
	{
		m_pMediaControl->Stop();
		m_pMediaControl->Release();
		m_pMediaControl=NULL;
	}	
	if (m_pGraph)
	{	
		m_pGraph->Release();
		m_pGraph=NULL;
	}
	CoUninitialize();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -