应用程序通过调用图表管理器的imediaevent::getevent方法来从事件队列中获取事件。如果有事件发生,该函数就返回一个事件码和两个参数,如果没有事件,则一直阻塞直到有事件发生和超过某个时间。调用getevent函数后,应用程序必须调用imediaevent::freeeventparams来释放事件码所带参数的资源。例如,某个参数可能是由filter graph分配的内存。
下面的代码演示了如何从事件队列中提取事件
long evcode, param1, param2;
hresult hr;
while (hr = pevent->getevent(&evcode, ¶m1, ¶m2, 0), succeeded(hr))
{
switch(evcode)
{
// call application-defined functions for each
// type of event that you want to handle.
}
hr = pevent->freeeventparams(evcode, param1, param2);
}