예 일단 프로젝트에 winmm.lib 이라는 라이브러리를 추가한 후에, 다시 프로젝트에서 MMC.H 파일과 MMC.CPP 파일을 만듭니다.
그리고 MMC.H 파일에 다음을 삽입해주세요
#pragma once
#include "StdAfx.h"
#include <mmsystem.h>
class playMedia {
protected:
MCIDEVICEID wDeviceID;
public:
void ShowError(DWORD err);
BOOL play(CString file);
BOOL play();
};
그리고 MMC.CPP 파일에는 다음을 삽입해주세요
#include "StdAfx.h"
#include "MMC.H"
BOOL playMedia::play(CString file)
{
DWORD dwReturn;
MCI_OPEN_PARMS mciOpenParms;
MCI_PLAY_PARMS mciPlayParms;
mciOpenParms.lpstrDeviceType = "MPEGVideo";
mciOpenParms.lpstrElementName = file;
if( dwReturn = mciSendCommand(NULL,MCI_OPEN,MCI_NOTIFY | MCI_OPEN_TYPE | MCI_OPEN_ELEMENT | MCI_WAIT,(DWORD)&mciOpenParms))
{
ShowError(dwReturn);
return false;
}
wDeviceID = mciOpenParms.wDeviceID;
//HWND hWnd = CWnd::FromHandle(CWindow::GetWindow(GW_OWNER));
mciOpenParms.dwCallback = (DWORD)AfxGetMainWnd()->GetSafeHwnd();
mciPlayParms.dwCallback = (DWORD)AfxGetMainWnd()->GetSafeHwnd();
if(dwReturn = mciSendCommand(wDeviceID,MCI_PLAY,MCI_NOTIFY,(DWORD)&mciPlayParms))
{
ShowError(dwReturn);
mciSendCommand(wDeviceID,MCI_CLOSE,0,NULL);
return false;
}
return true;
}
void playMedia::ShowError(DWORD err)
{
char buf[256];
mciGetErrorString(err,buf,sizeof(buf));
AfxMessageBox(buf,MB_OK | MB_ICONEXCLAMATION);
}
그 후에 음악을 재생시킬 파일에 맨위에 다음을 입력해주세요
playMedia g_Media;
그리고 음악을 재생시킬 함수 안에는
m_Media.play(" I do - 비.mp3");
I do - 비.mp3 안에 재생시키실 파일 이름을 적어주시면 됩니다.~
그리고 DirectX에서 재생하는 방법은 약간 저수준 방식입니다.
덕분에 지지직 거리는 음이나, 노이즈등 여러 효과를 넣을 수 있게 되었죠.
DirectX에서는 사운드 버퍼라는 것을 통해 사용자가 직접 음악 파일의 내용을 불러와서 그 안에 채워서 재생하는 방식입니다.
물론 현재 제가 가르쳐드린 방식도 그런 방식이지만, 그 내부 처리는 생략한 것 입니다.
그럼 즐거운 프로그래밍 하세요 ~//
그리고 MMC.H 파일에 다음을 삽입해주세요
#pragma once
#include "StdAfx.h"
#include <mmsystem.h>
class playMedia {
protected:
MCIDEVICEID wDeviceID;
public:
void ShowError(DWORD err);
BOOL play(CString file);
BOOL play();
};
그리고 MMC.CPP 파일에는 다음을 삽입해주세요
#include "StdAfx.h"
#include "MMC.H"
BOOL playMedia::play(CString file)
{
DWORD dwReturn;
MCI_OPEN_PARMS mciOpenParms;
MCI_PLAY_PARMS mciPlayParms;
mciOpenParms.lpstrDeviceType = "MPEGVideo";
mciOpenParms.lpstrElementName = file;
if( dwReturn = mciSendCommand(NULL,MCI_OPEN,MCI_NOTIFY | MCI_OPEN_TYPE | MCI_OPEN_ELEMENT | MCI_WAIT,(DWORD)&mciOpenParms))
{
ShowError(dwReturn);
return false;
}
wDeviceID = mciOpenParms.wDeviceID;
//HWND hWnd = CWnd::FromHandle(CWindow::GetWindow(GW_OWNER));
mciOpenParms.dwCallback = (DWORD)AfxGetMainWnd()->GetSafeHwnd();
mciPlayParms.dwCallback = (DWORD)AfxGetMainWnd()->GetSafeHwnd();
if(dwReturn = mciSendCommand(wDeviceID,MCI_PLAY,MCI_NOTIFY,(DWORD)&mciPlayParms))
{
ShowError(dwReturn);
mciSendCommand(wDeviceID,MCI_CLOSE,0,NULL);
return false;
}
return true;
}
void playMedia::ShowError(DWORD err)
{
char buf[256];
mciGetErrorString(err,buf,sizeof(buf));
AfxMessageBox(buf,MB_OK | MB_ICONEXCLAMATION);
}
그 후에 음악을 재생시킬 파일에 맨위에 다음을 입력해주세요
playMedia g_Media;
그리고 음악을 재생시킬 함수 안에는
m_Media.play(" I do - 비.mp3");
I do - 비.mp3 안에 재생시키실 파일 이름을 적어주시면 됩니다.~
그리고 DirectX에서 재생하는 방법은 약간 저수준 방식입니다.
덕분에 지지직 거리는 음이나, 노이즈등 여러 효과를 넣을 수 있게 되었죠.
DirectX에서는 사운드 버퍼라는 것을 통해 사용자가 직접 음악 파일의 내용을 불러와서 그 안에 채워서 재생하는 방식입니다.
물론 현재 제가 가르쳐드린 방식도 그런 방식이지만, 그 내부 처리는 생략한 것 입니다.
그럼 즐거운 프로그래밍 하세요 ~//