首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请来帮小弟我看看下面有关问题(事件),多谢

2012-02-29 
求助:请各位大哥来帮我看看下面问题(事件),谢谢!//播放所有wave,mps,和视频文件classCVideo{private:///di

求助:请各位大哥来帮我看看下面问题(事件),谢谢!
//播放所有wave,mps,和视频文件
class   CVideo
{
private:
///   direct   show
IGraphBuilder*m_pGraph;//   Filter对象
IMediaControl*m_pMediaControl;//   流媒体播放器
IMediaPosition*m_pMediaPosition;//   播放位置
IMediaEvent*m_pEvent;//   流媒体触发事件
IVideoWindow*m_pViewWin;//   播放视频的窗口
HWNDm_hWnd;//   窗口句柄
BOOLm_isLoop;//   是否循环播放

///   direct   sound
LPDIRECTSOUND8m_pSound;//   声音硬件指针
LPDIRECTSOUNDBUFFERm_pSBuffer;//   声音缓冲
DSBUFFERDESCm_dsdesc;
public:
      LRESULT   AVI_WaitCompletion(long   a=INFINITE)//等候响应事件,一般用于播放avi。使用时需传入一个长整形,确定播放停止的时间用毫秒表示。
{
      long   evCode;
      if(   m_pEvent   )
      {
      m_pEvent-> WaitForCompletion(a,&evCode);
      return   S_OK;
      }
      else  
      {    
return   E_FAIL;
      }

}
};


//初始化流媒体播放
HRESULT   CVideo::InitStream()
{
//   创建过滤器
  CoInitialize(   NULL   );
CoCreateInstance(CLSID_FilterGraph,   NULL,
                                          CLSCTX_INPROC,   IID_IGraphBuilder,   (void**)&m_pGraph);

//   创建控制器
m_pGraph-> QueryInterface(   IID_IMediaControl,   (   void**   )&m_pMediaControl   );

//   创建播放位置
m_pGraph-> QueryInterface(   IID_IMediaPosition,   (   void**   )&m_pMediaPosition   );

//   创建事件响应接口
m_pGraph-> QueryInterface(   IID_IMediaEvent,   (   void**   )&m_pEvent   );

//   创建播放窗口
m_pGraph-> QueryInterface(   IID_IVideoWindow,   (   void**   )&m_pViewWin   );


return   S_OK;
}


请教:

这里有几个地方不明白:
问题1:
INFINITE   这个系统定义好的,是奥妙?

问题2:
if(   m_pEvent   )
 
是什么意思?
 
哪个东西来响应事迹啊?
 
问题3:
m_pEvent     是怎么产生的?

 
  谢谢!


[解决办法]
3.HANDLE m_pEvent = CreateEvent(
LPSECURITY_ATTRIBUTES lpEventAttributes,
BOOL bManualReset,
BOOL bInitialState,
LPTSTR lpName);
INFINITE 无限长时间等待

热点排行