对IVideoWindow的put_Owner()操作后视频窗口不能正常刷新的问题

最近经常见到有人问视频窗口不能正常显示的问题,都说不知道原因即解决办法。

其实这是由于视频窗口没有消息循环不能实时刷新造成的,出现这样的情况基本都是在调用了IVideoWindow接口的put_Owner()方法将视频窗口设置为了其他窗口的子窗口后出现的。

一般解决办法是将视频窗口设置为主窗体的子窗体,借助主窗体的WM_PAINT消息在OnPaint()里面实现刷新。再有就是在结束时的善后工作一定要做好!!一般是:

pivw->put_Visible(OAFALSE);
 pivw->put_Owner(NULL);

pivw是IVideoWindow接口指针

附带说一下如果是要接收视频窗口的消息,比如全屏下的ESC,就用

pivw->put_MessageDrain((OAHWND)m_mainHwnd);//m_mainHwnd是接收消息的窗体的句柄

你可能感兴趣的:(DirectShow)