Визуальное воспроизведение MP3 с использованием строки отправки mci Переполнение стека

Я пытаюсь воспроизвести некоторые mp3-файлы в качестве фоновой музыки в одном из моих проектов, который я делаю. Я пытался воспроизвести его, используя mcisendstring, но он просто не мог работать 🙁

Вот что я сделал:

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();
}

// функция load2

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, хранящееся как закрытый атрибут

2

Решение

После долгих проб и ошибок я наконец нашел способ заставить его работать. Для тех, кто сталкивается с той же проблемой, что и я, вот оно:

//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);
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]