DirectShow中的事件通知机制[4]

[入库:2005年8月19日] [更新:2007年3月24日]

本文简介:选择自 aoosang 的 blog

为了重载filter图表管理器对事件的缺省处理,你可以使用某个事件码做参数调用imediaevent::canceldefaulthandling ,这样就可以屏蔽图表管理器对某个事件码的处理了。如果要恢复图表管理器对该事件码的缺省处理,可以调用  imediaevent::restoredefaulthandling。如果图表管理器对某个事件码没有缺省的处理,调用这两个函数是不起作用的。

 

3事件是如何发生的

 

为了处理事件,应用程序需要一种机制来获取正在队列中等待的事件。filter图表管理器提供了两种方法。

1 窗口通知,图表管理器发送开发者自己定义的窗口消息

2 事件信号 如果队列中有dshow事件,就用事件信号通知应用程序,如果队列为空就重新设置事件信号。

下面的代码演示了如何利用消息通知

#define wm_graphnotify wm_app + 1   // private message.

pevent->setnotifywindow((oahwnd)g_hwnd, wm_graphnotify, 0);

然后在窗口消息处理过程中处理该消息如下

lresult callback windowproc( hwnd hwnd, uint msg, uint wparam, long lparam)

{

本文关键:DirectShow中的事件通知机制
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top