最近经常见到有人问视频窗口不能正常显示的问题,都说不知道原因即解决办法。
其实这是由于视频窗口没有消息循环不能实时刷新造成的,出现这样的情况基本都是在调用了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是接收消息的窗体的句柄