首先:
我还是一个多线程编程的新手,用的方法可能有不妥当的地方,有不足之处还望各位包涵。
通过上一篇,咱们已经对mciSendString在多线程中的使用要点有了一个初步认识,接下来该解决线程间信息传递的问题了。不过在这之前,先要进行一些准备工作。
首先,为了方便管理音乐,建立一个音乐类是很有必要的,这个类里面应该包括音乐的基本信息(文件路径、音量等)和状态信息(正在播放、停止、未打开等),假定这个音乐类编写如下:
class Music
{
protected:
int m_ID; //编号,用于判断是否是同一个对象
static int m_nNewID; //下一个可用编号
std::string filepath; //为""表示不改变路径,否则改变音乐文件路径
int Volume; //音量,为负数表示不改变
long StartPosition; //音乐开始位置,为负数表示不改变
long EndPosition; //音乐结束位置,为负数表示不改变
int NowPosition; //用于记录暂停时的音乐位置
bool StopPlayFlag; //暂停播放的标志
bool RepeatFlag; //循环播放的标志
bool KillFocusFlag; //失去焦点标志
bool SetFocusFlag; //获取焦点标志
//标志位,用于获取音乐状态
bool Playing; //是否正在播放
bool Stopped; //是否停止
bool Opened; //是