IGraphBuilder *pGBuilder = NULL;
IMediaControl *pMControl = NULL;
IMediaEvent *pEvent = NULL;
CoInitialize(NULL); //初始化COM
CoCreateInstance(CLSID_FilterGraph, NULL,
CLSCTX_INPROC_SERVER, IID_IGraphBuilder, (void**)&pGBuilder);
pGBuilder->QueryInterface(IID_IMediaControl, (void**)&pMControl);pGBuilder->RenderFile(wstrSoundPath, NULL); //调入文件pMControl->Run(); //播放pEvent->WaitForCompletion(INFINITE, &evCode);//阻塞 直到音乐播放pGBuilder = NULL;
pMControl = NULL;
pEvent = NULL;
CoUninitialize(); //释放COM
这段可以播放音乐,但是 pEvent->WaitForCompletion(INFINITE, &evCode); 会阻塞程序,窗口动不了.
怎么样可以不阻塞程序,又播放音乐? 谢谢
IMediaControl *pMControl = NULL;
IMediaEvent *pEvent = NULL;
CoInitialize(NULL); //初始化COM
CoCreateInstance(CLSID_FilterGraph, NULL,
CLSCTX_INPROC_SERVER, IID_IGraphBuilder, (void**)&pGBuilder);
pGBuilder->QueryInterface(IID_IMediaControl, (void**)&pMControl);pGBuilder->RenderFile(wstrSoundPath, NULL); //调入文件pMControl->Run(); //播放pEvent->WaitForCompletion(INFINITE, &evCode);//阻塞 直到音乐播放pGBuilder = NULL;
pMControl = NULL;
pEvent = NULL;
CoUninitialize(); //释放COM
这段可以播放音乐,但是 pEvent->WaitForCompletion(INFINITE, &evCode); 会阻塞程序,窗口动不了.
怎么样可以不阻塞程序,又播放音乐? 谢谢
我调用的方法错误, 应该声明把接口声明为全局变量,COM的初始化和释放也不能在OnPlay里。