关于DirectShow媒体播放器画面不显示的解决方法
2011-05-10 22:33
267 查看
最近写了一个小程序,基于DirectShow的媒体播放器。原理很简单,就是用ds的智能连接,构建起Graph后就可以了。
但是写完之后,有时会出现一个问题,就是明明已经开始播放了,但是看不到视频画面。这个现象有的时候又不会出现,很是奇怪。后来发现,只要用鼠标拖动一下窗口,就好了。在做视频采集的时候,也遇到过这个问题,但是没有重视,后来不知道怎么就不会出现了。
刚开始以为是把可见性属性设置成OAFALSE了,但明明是OATRUE。自己研究程序,翻来覆去看了很多遍,都没有找到问题出在了哪里。又看了一下sdk中的例子,好像没有什么马虎的地方。研究半天,无果,还是百度一下吧。
网上很多人也都遇到过这个问题,解释很多,但是都没有看懂,不过找到了解决方法:
1、增加WM_ERASEBKGND消息处理
2、在OnInitDlg()中:
3、消息处理函数中
这样就可以了。学习了一段时间的DirectShow,也遇到了各种各样的问题,应该说是自己慢慢摸索过来的,走了很多的弯路。以后争取多写一些自己的经验,以给正在学习或者以后会学习的人。也望发现新的问题的朋友留言提问,互相交流学习~
但是写完之后,有时会出现一个问题,就是明明已经开始播放了,但是看不到视频画面。这个现象有的时候又不会出现,很是奇怪。后来发现,只要用鼠标拖动一下窗口,就好了。在做视频采集的时候,也遇到过这个问题,但是没有重视,后来不知道怎么就不会出现了。
刚开始以为是把可见性属性设置成OAFALSE了,但明明是OATRUE。自己研究程序,翻来覆去看了很多遍,都没有找到问题出在了哪里。又看了一下sdk中的例子,好像没有什么马虎的地方。研究半天,无果,还是百度一下吧。
网上很多人也都遇到过这个问题,解释很多,但是都没有看懂,不过找到了解决方法:
1、增加WM_ERASEBKGND消息处理
2、在OnInitDlg()中:
m_viewWnd.ModifyStyle(0, WS_CLIPCHILDREN);
3、消息处理函数中
CRect rc; m_viewWnd.GetWindowRect(&rc); //m_viewWnd为CStatic类型 ScreenToClient(&rc); pDC->ExcludeClipRect(&rc)
这样就可以了。学习了一段时间的DirectShow,也遇到了各种各样的问题,应该说是自己慢慢摸索过来的,走了很多的弯路。以后争取多写一些自己的经验,以给正在学习或者以后会学习的人。也望发现新的问题的朋友留言提问,互相交流学习~
相关文章推荐
- 关于ASP.NET中Menu控件在浏览器中不正常显示解决方法
- 关于chm电子书无法显示网页的解决方法
- 关于struts2中sx:datetimepicker标签月份正常显示的解决方法
- 关于myeclipse添加图标到Toolbar中不能显示效果的解决方法
- 关于fragment点击穿透的重叠显示解决方法
- 关于vmware workstation启动虚拟机显示“内部错误”的解决方法
- 关于在win7环境下线程里调用SaveFileDialog不能显示的解决方法
- 关于chm电子书无法显示网页的解决方法
- 关于ExtJs4提交数据到jsp页面,返回正确的json显示例子。及error:You're trying to decode an invalid JSON String...解决方法
- 关于.Net 调试 运行的时候,页面无法显示的解决方法
- 关于CalendarExtender(AJAX)不显示中文的解决方法
- 关于英文ROM短信发送后对方显示为横线解决方法
- 关于Chart控件X轴数据显示不全解决方法。
- 关于百度地图 BMap.InfoWindow 只显示最后一条信息解决方法
- 关于ModalPopupExtender控件不能居中显示的一些解决方法
- 关于 ScrollLayout加载时总是显示在中间的视图解决方法
- 浅谈pandas中DataFrame关于显示值省略的解决方法
- eclipse 3.7.2版本关于中文字体显示不正常的原因及解决方法
- Unity--关于中文显示的解决方法
- TIPTOP 4gl画面档输入负数却显示为正数的解决方法