16,472
社区成员
发帖
与我相关
我的任务
分享
volatile HWND hMCI = NULL;
volatile int slen = 0;
volatile int spos = 0;
CMenu mutex;//有必要加个线程同步????
//三个全局变量
UINT WINAPI MyThreadProc(LPVOID pParam)
{
mutex.Lock();
hMCI = MCIWndCreate(NULL,NULL,WS_POPUP|MCIWNDF_NOPLAYBAR|MCIWNDF_NOMENU,NULL);
MCIWndOpen(hMCI,"res//back.mp3",0);
slen = MCIWndGetLength(hMCI);
if(hMCI)
MCIWndPlay(hMCI);
mutex.unLock();
return 1;
}
void CMainFrame::OnManageUser()
{
if(ShowObj.ShowWindow(SW_SHOW))
{
//菜单的单击消息,启动线程
AfxBeginThread((AFX_THREADPROC)MyThreadProc,GetSafeHwnd());
}
}
SetTimer(1,150,NULL);//CMainFrame的OnCreate函数里
void CMainFrame::OnTimer(UINT_PTR nIDEvent)
{
mutex.Lock();
spos = MCIWndGetLength(hMCI);//用定时器来判断,是否播放完毕,播放完毕再次启动线程
if(spos == slen && spos != 0)
{
AfxBeginThread((AFX_THREADPROC)MyThreadProc,GetSafeHwnd());
spos = 0;
}
mutex.unLock();
CFrameWnd::OnTimer(nIDEvent);
}
调试hMCI 句柄值是相同的,但是,不知为啥spos的值是0 不变化。