Я ищу часами и надеюсь, ты сможешь мне помочь.
Я программирую музыкальный проигрыватель, который читает файл * .wav через ifstream в буфер, а затем я воспроизводю звук через sndPlaysound (). Это работает, но теперь я хочу приостановить воспроизводимую песню, а затем продолжить позже, и я хочу знать, есть ли у кого-нибудь какие-либо предложения, как я могу перейти, например, к. 10 секунд в файле WAV, так что я не начинаю с самого начала снова.
Вот код вещей, которые я делал до сих пор:
#pragma comment(lib,"winmm.lib")
#include <windows.h>
#include <iostream>
#include <fstream>
Wave::Wave(char * filename)
{
buffer = 0;
std::ifstream infile(filename, std::ios::binary);
/*here is some irrelevant code I omitted*/
infile.seekg(0, std::ios::end); //move to end
int length = infile.tellg(); //
buffer = new char[length]; //allocate memory
infile.seekg(0, std::ios::beg); //move to start
infile.read(buffer, length); //save in buffer
totalTime = (length - 44) / bytesPerSec; //total time of *.wav
infile.close();
}
void Wave::play(bool async)
{
if (async)
sndPlaySound((LPCTSTR)buffer, SND_MEMORY | SND_ASYNC);
else
sndPlaySound((LPCTSTR)buffer, SND_MEMORY);
}
и я ищу какие-либо идеи, как сделать такой метод
Wave::play(bool async, int x)
{
/*start playing *.wav at x seconds*/
}
Спасибо за каждый ответ или идею
Задача ещё не решена.
Других решений пока нет …