在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

  1. WS_BORDER
  2. Creates a window that has a thin-line border.
  3. WS_CAPTION
  4. Creates a window that has a title bar (includes the WS_BORDER style).
  5. WS_CHILD
  6. Creates a child window. A window with this style cannot have a menu bar. This style cannot be used with the WS_POPUP style.
  7. WS_CHILDWINDOW
  8. Same as the WS_CHILD style.
  9. WS_CLIPCHILDREN
  10. Excludes the area occupied by child windows when drawing occurs within the parent window. This style is used when creating the parent window.
  11. WS_CLIPSIBLINGS
  12. Clips child windows relative to each other; that is, when a particular child window receives a WM_PAINT message, the WS_CLIPSIBLINGS style clips all other overlapping child windows out of the region of the child window to be updated. If WS_CLIPSIBLINGS is not specified and child windows overlap, it is possible, when drawing within the client area of a child window, to draw within the client area of a neighboring child window.
  13. WS_DISABLED
  14. Creates a window that is initially disabled. A disabled window cannot receive input from the user. To change this after a window has been created, use EnableWindow.
  15. WS_DLGFRAME
  16. Creates a window that has a border of a style typically used with dialog boxes. A window with this style cannot have a title bar.
  17. WS_GROUP
  18. Specifies the first control of a group of controls. The group consists of this first control and all controls defined after it, up to the next control with the WS_GROUP style. The first control in each group usually has the WS_TABSTOP style so that the user can move from group to group. The user can subsequently change the keyboard focus from one control in the group to the next control in the group by using the direction keys.
  19. You can turn this style on and off to change dialog box navigation. To change this style after a window has been created, use SetWindowLong.
  20. WS_HSCROLL
  21. Creates a window that has a horizontal scroll bar.
  22. WS_ICONIC
  23. Creates a window that is initially minimized. Same as the WS_MINIMIZE style.
  24. WS_MAXIMIZE
  25. Creates a window that is initially maximized.
  26. WS_MAXIMIZEBOX
  27. Creates a window that has a maximize button. Cannot be combined with the WS_EX_CONTEXTHELP style. The WS_SYSMENU style must also be specified.
  28. WS_MINIMIZE
  29. Creates a window that is initially minimized. Same as the WS_ICONIC style.
  30. WS_MINIMIZEBOX
  31. Creates a window that has a minimize button. Cannot be combined with the WS_EX_CONTEXTHELP style. The WS_SYSMENU style must also be specified.
  32. WS_OVERLAPPED
  33. Creates an overlapped window. An overlapped window has a title bar and a border. Same as the WS_TILED style.
  34. WS_OVERLAPPEDWINDOW
  35. Creates an overlapped window with the WS_OVERLAPPED, WS_CAPTION, WS_SYSMENU, WS_THICKFRAME, WS_MINIMIZEBOX, and WS_MAXIMIZEBOX styles. Same as the WS_TILEDWINDOW style.
  36. WS_POPUP
  37. Creates a pop-up window. This style cannot be used with the WS_CHILD style.
  38. WS_POPUPWINDOW
  39. Creates a pop-up window with WS_BORDER, WS_POPUP, and WS_SYSMENU styles. The WS_CAPTION and WS_POPUPWINDOW styles must be combined to make the window menu visible.
  40. WS_SIZEBOX
  41. Creates a window that has a sizing border. Same as the WS_THICKFRAME style.
  42. WS_SYSMENU
  43. Creates a window that has a window menu on its title bar. The WS_CAPTION style must also be specified.
  44. WS_TABSTOP
  45. Specifies a control that can receive the keyboard focus when the user presses the TAB key. Pressing the TAB key changes the keyboard focus to the next control with the WS_TABSTOP style.
  46. You can turn this style on and off to change dialog box navigation. To change this style after a window has been created, use SetWindowLong.
  47. WS_THICKFRAME
  48. Creates a window that has a sizing border. Same as the WS_SIZEBOX style.
  49. WS_TILED
  50. Creates an overlapped window. An overlapped window has a title bar and a border. Same as the WS_OVERLAPPED style.
  51. WS_TILEDWINDOW
  52. Creates an overlapped window with the WS_OVERLAPPED, WS_CAPTION, WS_SYSMENU, WS_THICKFRAME, WS_MINIMIZEBOX, and WS_MAXIMIZEBOX styles. Same as the WS_OVERLAPPEDWINDOW style.
  53. WS_VISIBLE
  54. Creates a window that is initially visible.
  55. This style can be turned on and off by using ShowWindow or SetWindowPos.
  56. WS_VSCROLL
  57. Creates a window that has a vertical scroll bar.

Directshow 通过 put_Owner 指定显示窗口后,自动刷新问题的更多相关文章

  1. ASPX 关闭子窗口后自动更新父窗口

    Response.Write("<script language:javascript>javascript:window.close();</script>&quo ...

  2. 黄聪:PHP如何实现延迟一定时间后自动刷新当前页面、自动跳转header("refresh:1;url={$url}");

    //1秒后自动跳转 header("refresh:1;url={$url}"); exit; //1秒后自动刷新当前页面header("refresh:1;" ...

  3. Javascript实现页面加载完成后自动刷新一遍清除缓存文件

    我们有些时候在加载页面时,会出现缓存文件对当前文件的表现效果有干扰,如有些缓存的样式文件会是页面效果发生改变,这时我们希望页面在加载时能自动刷新一遍清楚缓存文件. 但是由于跳转页面肯定会用到BOM部分 ...

  4. BrowserSync 热更新的使用(保存后自动刷新)

    BrowserSync使用的优点,BrowserSync监听条件中的文件,发现更新会立刻刷新浏览器,就像 vue中的热更新一样,解放F5实现自动更新,提高开发效率, 解决了使用双屏幕时来回切换的烦恼! ...

  5. 问题解决——ShowWindow不显示窗口

    配合任务栏通知区域. //MFC对话框程序 void CXXXDlg::OnShowHideUi() { // TODO: 在此添加命令处理程序代码 m_bShown=!m_bShown; ShowW ...

  6. gulp之压缩合并MD5清空替换加前缀以及自动编译自动刷新浏览器大全

    gulp是基于流的前端构件化工具.目前比较火的前端构建化工具还是挺多的,grunt gulp fis3等等. 这个鬼东西有什么用?请参考https://www.zhihu.com/question/3 ...

  7. JAVA-JSP内置对象之response对象实现页面自动刷新

    相关资料:<21天学通Java Web开发> response对象 实现页面自动刷新1.可以通过response对象的addIntHeader()方法添加一个标题为Refrsh的标头,并指 ...

  8. JSP中自动刷新

    以下内容引用自http://wiki.jikexueyuan.com/project/jsp/auto-refresh.html: 细想一个显示在线比赛分数.股市状态或当前交易额的网页.对于所有这种类 ...

  9. nodejs里的express自动刷新高级篇【转载】

    搬运自[简书:http://www.jianshu.com/p/2f923c8782c8]亲测可用哦! 最近在使用express框架及mongodb,由于前端和后端代码修改后都需要实现自动刷新功能,刚 ...

随机推荐

  1. Android 百度地图开发问题----解决地图有时候加载不出来问题

    相信很多人在开发百度地图的时候会出现百度地图有时候会加载不出来,只显示网格图. 这个问题究其原因就是申请百度key的时候填写的SHA1也就是指纹证书有问题.估计很多开发者都是照着百度开放平台上介绍的流 ...

  2. Nginx CORS实现JS跨域

    1. 什么是跨域 简单地理解就是因为JavaScript同源策略的限制,a.com 域名下的js无法操作b.com或是c.a.com域名下的对象. 同源是指相同的协议.域名.端口.特别注意两点: 如果 ...

  3. perl5 第十一章 文件系统

    第十一章  文件系统 by flamephoenix 一.文件输入/输出函数  1.基本I/O函数    1)open函数    2)用open重定向输入    3)文件重定向    4)指定读写权限 ...

  4. hdoj 3478 Catch(二分图判定+并查集)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3478 思路分析:该问题需要求是否存在某一个时刻,thief可能存在图中没一个点:将该问题转换为图论问题 ...

  5. Flex 按钮添加图标

    第一种是在Flex应用中创建一个变量,利用[Bindable]和[Embed] ,在代码中以参数形式传入制定图标(icon)的路径,然后利用类似icon="{Icon}"的代码嵌入 ...

  6. webform基础介绍及页面传值(session,cookie)、跳转页面

    一,IIS 1.首先知道IIS是个什么东西:它是web服务器软件,安装在服务器上,接受客户端发来的请求,并传送给服务器端,然后响应请求并送回给客户端.类似于饭店里的服务员. 2.会安装IIS——控制面 ...

  7. HTML之表格与表单

    一.表格(table/tr/td) <table></table>表格 --不设高度 width:宽度.可以用像素或百分比表示. 常用960像素. border:边框,常用值为 ...

  8. MySQL支持emoji

    方案1: 应用层支持 MySQL默认的数据库编码是utf8,对于emoji文字是不能直接存储的,要想存储emoji,有许多库支持对emoji的转换,例如将

  9. PHPExcel 生成excel统计表格

    db.php为数据库操作类, $config为数据库配置,PHPExcel版本为PHPExcel_1.8.0,  php代码: $dir = dirname(__FILE__); require $d ...

  10. 单色VGA显示verilogHDL通用代码

    今天做VGA,真是拼凑了好久啊.唉,总算完成了. 本来想偷懒移植,最后还是自己写的代码. //2015/12/13 //designer : pengxiaoen //function : vga c ...