我编写了下载 mp3 文件的程序。它工作正常。我的下一个任务是使用 DirectShow 播放同时下载的文件。在 MSDN 网站上,我找到并复制了以下代码:
HRESULT hr = CoInitialize(NULL);
if (FAILED(hr))
{
//
}
IGraphBuilder *pGraph;
hr = CoCreateInstance(CLSID_FilterGraph, NULL,CLSCTX_INPROC_SERVER, IID_IGraphBuilder, (void **)&pGraph);
IMediaControl *pControl;
IMediaEvent *pEvent;
hr = pGraph->QueryInterface(IID_IMediaControl, (void **)&pControl);
hr = pGraph->QueryInterface(IID_IMediaEvent, (void **)&pEvent);
hr = pGraph->RenderFile(L"C:\\Test.mp3", NULL);
hr = pControl->Run();
long evCode = 0;
pEvent->WaitForCompletion(INFINITE, &evCode);
pControl->Release();
pEvent->Release();
pGraph->Release();
CoUninitialize();
问题是程序无法播放此文件。为了写入数据,我使用以下代码打开文件:
TFileStream *MyFile = new TFileStream(path,fmOpenWrite | fmShareDenyNone);
允许其他应用程序读取该文件。我也使用WINAPI函数打开和写入文件,但结果是一样的。
我在哪里犯了错误?
请帮帮我 - 有什么方法可以播放此时下载的文件?