我在子线程里用PlaySound播放wav, 我在主线程终止了那个线程,再次创建那个子线程播放WAV,没有声音了,怎么回事?
解决方案 »
- [win32]如何实现点击了"显示桌面"后,窗口不被最小化?
- 关于控制调用的动态库中的控件。GetDlgItem(ID)->EnableWindow(FALSE)的问题,求助
- 新安装的VC环境,在打开随书附带的光盘实例的工程文件时,类视图文件没有,请各位帮助解决,谢谢各位
- 急?关于一个WORD直接读取内存的问题?
- 在mfc中如何创建一个目录,并且如何把一个文件移动到其他地方
- 我现在23,要自己开软件公司,大家提提意见阿
- 各位大侠救救我把!在线等~~~
- 如何得知局域网中一台计算机是否在上网
- 如何使列表控件的第一列居中(包括标题文本和内容文本)???
- ADO 读取日期型数据只能得到字符串吗?我想得到time_t 类型.
- vc调用matlab
- 用双缓冲时遇到的一个问题,向高手请教。
1 你是怎样结束掉线程的
2 你调用playsound的方法怎样的?
if(!GetExitCodeThread(m_ExitThreadeventComPlay,&code)||(code == STILL_ACTIVE))
{
TerminateThread(m_ExitThreadeventComPlay,0);
CloseHandle(m_ExitThreadeventComPlay);
}
线程函数
DWORD WINAPI CWTV020SV3Dlg::ComPlay(LPVOID lparam)
{
CWTV020SV3Dlg *wtvDlg = (CWTV020SV3Dlg *)lparam; if(wtvDlg == NULL)
{
return 0;
} vector<PlayNode*> *pPlayList = &wtvDlg->PlayList; if(pPlayList == NULL)
{
return 0;
} int ComListSize = pPlayList->size(); for (int i=0; i<ComListSize; i++)
{ if ((*pPlayList)[i]->Sign == 1)
{
Sleep((*pPlayList)[i]->m_MuteData * 10);
}
else
{
CString path = (*pPlayList)[i]->m_VoiceFileName; //取得文件路径
path = wtvDlg->CSMainAudioSource + "\\" + path +".wav"; if (!path.IsEmpty())
{
PlaySound(path, NULL, SND_FILENAME|SND_SYNC); }
} } return 0;
}
我需要的是同步播放假如一首歌3分钟 在这首歌播放之后,我设置了值退出线程的标志,那不是要等<3分钟?
可能关闭线程而没有关闭PlaySound函数正在播放的语音造成的?