我现在正在寻找几个小时,我希望你能帮助我。
我正在编写一个音乐播放器,它通过ifstream读取* .wav文件到缓冲区然后我通过sndPlaysound()播放声音。这有效,但现在我想暂停播放的歌曲然后继续,我想知道是否有人有任何建议如何我可以跳到例如在wav文件中10秒,这样我就不会再开始了。
这是我到目前为止所做的事情的代码:
#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*/
}
感谢您的每一个答案或想法