标签:
在Directshow中,我们可以对render指定显示窗口,在写程序的过程中, 发现通过put_Owner设置的显示窗口存在自动刷新问题,譬如窗口被遮挡然后再次露出时,被遮挡部分不能自动刷新,需要拖动窗口进行刷新。
网上搜索了一下,找到了解决问题的办法:
http://blog.csdn.net/lemon_wei/archive/2008/02/29/2132195.aspx
具体处理方法:
假设图象窗口的picture控件id为IDC_FRAME_VIEW,
pViewWindon 为 IVideoWindow*接口,作四步处理
1、修改显示控件属性
CWnd* pWnd = GetDlgItem(IDC_FRAME_VIEW);
pWnd->ModifyStyle(0, WS_CLIPCHILDREN);
2、设置为子窗口的句柄
CWnd* pWnd = GetDlgItem(IDC_FRAME_VIEW);
put_Owner((OAHWND)pWnd->GetSafeHwnd( ))
3、OnPaint 不用动
4、OnEraseBkgnd 加如下代码
RECT rect;
CWnd* pWnd = GetDlgItem(IDC_FRAME_VIEW);
pWnd->GetWindowRect(&rect);
ScreenToClient(&rect);
pDC-> ExcludeClipRect(&rect);
return CDialog::OnEraseBkgnd(pDC);
其中的 ModifyStyle 中第二个参数dwstyle
Directshow 通过 put_Owner 指定显示窗口后,自动刷新问题
标签:
原文地址:http://www.cnblogs.com/sding/p/4421740.html