2013-03-19 3 views
2

나는 내 프로젝트 중 하나에서 내 음악으로 mp3 파일을 재생하려고합니다. 나는 mcisendstring를 사용하여 재생하려고하지만 그것은 단지 작업 :(mci를 사용하여 MP3를 재생하면 C++이 표시됩니다.

을 couldnt는이 내가 무엇을했는지 :

CMP3_MCI myMp3; 
std::string address= "C:\\Users\\music embed testing\\test.mp3"; 
myMp3.Load(address); 
myMp3.Play(); 

//로드 기능

void Load(string szFileName) 
{ 
    m_szFileName = szFileName; 
    Load2(); 
} 

//로드 2 기능

void Load2() 
{ 
     std::string szCommand = "open \"" + GetFileName() + "\" type mpegvideo alias " + GetFileName();  
     mciSendString(szCommand.c_str(), NULL, 0, 0); 
} 

// 재생 기능

void Play() 
{ 
    std::string szCommand = "play " + GetFileName() + " from 0"; 
    mciSendString(szCommand.c_str(), NULL, 0, 0); 
} 

//려면 getFilename은 기본적으로 m_szFileName 많은 시행 착오 후 개인 속성

+0

별칭이 한 단어 이상이 아닌가요? 그게 효과가 있니? 어쨌든 여기서 별칭을 사용하는 것은 실제로 볼 수 없습니다. – chris

+0

안녕하세요, 저는 기본적으로 mciSendString을 사용하여 새로운 기능 중 하나를 복사하려고했습니다. Im은 정확히 무엇을하고 있는지 확실하지 않습니다. 별칭을 사용하는 이유는 무엇이며 어떻게 생략합니까? 예를 들면 : http://www.codeproject.com/Articles/17279/Using-mciSendString-to-play-media-files – user2114036

+0

''open \ ""+ GetFileName() + ""형식을 사용하면됩니다. mpegvideo' 그리고 나서 파일에''\ "+ GetFileName() +"\ "'을 사용하십시오 – chris

답변

3

로 저장 반환, 나는 마침내 그것이 작동되도록하는 방법을 알아 냈다. 나와 같은 문제에 직면 한 사람들에게 여기에 간다 :

//if you are using unicode 
LPCWSTR a = L"open cannon.mp3 type mpegvideo"; 
int error = 99; 
error = mciSendString(a, NULL,0,0); 
int error2; 
LPCWSTR b = L"play cannon.mp3"; 
error2 = mciSendString(b, NULL, 0, 0); 

//cannon.mp3 is stored in my resource file 
//error is just for debugging 

//if you are using multibyte 

LPCSTR a = "open cannon.mp3 type mpegvideo"; 
mciSendString(a, NULL, 0,0); 
LPCSTR b = "play cannon.mp3 repeat"; 
int error2 = mciSendString(b, NULL, 0, 0); 
관련 문제