//DShow实现的一个小播放器程序
IGraphBuilder *pGraph;
IMediaControl *pMediaControl;
IMediaEvent *pMediaEvent;
IVideoWindow *pVideoWindow;
IBasicVideo *pBasicVideo;
IBasicAudio *pBasicAudio;
IMediaSeeking *pMediaSeeking;
LONG lHeight, lWidth;
LONGLONG Current, Stop;
CoInitialize(NULL);
CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER,
IID_IGraphBuilder, (void**)&pGraph);
pGraph->QueryInterface(IID_IMediaControl, (void**)&pMediaControl);
pGraph->QueryInterface(IID_IMediaEvent, (void**)&pMediaEvent);
pGraph->QueryInterface(IID_IVideoWindow, (void **)&pVideoWindow);
pGraph->QueryInterface(IID_IBasicVideo, (void **)&pBasicVideo);
pGraph->QueryInterface(IID_IBasicAudio, (void **)&pBasicAudio);
pGraph->QueryInterface(IID_IMediaSeeking, (void **)&pMediaSeeking);
pGraph->RenderFile(L"D://movie//eyes.rm", NULL);
//要窗口句柄.
pVideoWindow->put_Owner((OAHWND)hWnd);
//播放窗口句柄的样式.
pVideoWindow->put_WindowStyle(WS_CHILD | WS_CLIPSIBLINGS | WS_CLIPCHILDREN);
//得到电影片的高宽.
pBasicVideo->GetVideoSize(&lWidth, &lHeight);
//设置播放时的位置和大小.
RECT client;
GetClientRect(hWnd, &client);
pVideoWindow->SetWindowPosition(client.left, client.top,
client.right, client.bottom);
//播放电影.
pMediaControl->Run();
//得到电影片播放的进度.
pMediaSeeking->GetPositions(&Current, &Stop);
//等待播放完毕.
//LONG evCode;
//pMediaEvent->WaitForCompletion(INFINITE, &evCode);
//释放各种接口资源.
pMediaEvent->Release();
pMediaControl->Release();
pVideoWindow->Release();
pBasicVideo->Release();
pBasicAudio->Release();
pMediaSeeking->Release();
pGraph->Release();
CoUninitialize();