用directshow在对话框地某控件上绘制视频,导致对话框无消息响应了,为啥?

使用了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);

posted @ 2010-01-27 15:14  DELPHI&.NET初学者[TECSOON WENDAY]  阅读(357)  评论(0)    收藏  举报