用IVideoWindow显示视频刷新的问题(不能显示)

来源:互联网 发布:mysql bit类型 编辑:程序博客网 时间:2024/04/27 14:13

现在很多显卡都能支持VMR9来显示了,不过有些机子还是不行,所以只能用老的显示方法(IVideoWindow),但刷新有问题,在网上找了好久,下面这个答案解决了我的问题。

 

使用了put_owner的问题,这是由于其没有消息循环所导致的 


如下引用: 

经常有刚接触的朋友问关于这类的问题,什么图象不刷新,拖动一下窗口就出来了呀等,在此我将相关处理方法写一下。 
    假设图象窗口的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);

原创粉丝点击