最近写了一个小程序,基于DirectShow的媒体播放器。原理很简单,就是用ds的智能连接,构建起Graph后就可以了。
但是写完之后,有时会出现一个问题,就是明明已经开始播放了,但是看不到视频画面。这个现象有的时候又不会出现,很是奇怪。后来发现,只要用鼠标拖动一下窗口,就好了。在做视频采集的时候,也遇到过这个问题,但是没有重视,后来不知道怎么就不会出现了。
刚开始以为是把可见性属性设置成OAFALSE了,但明明是OATRUE。自己研究程序,翻来覆去看了很多遍,都没有找到问题出在了哪里。又看了一下sdk中的例子,好像没有什么马虎的地方。研究半天,无果,还是百度一下吧。
网上很多人也都遇到过这个问题,解释很多,但是都没有看懂,不过找到了解决方法:
1、增加WM_ERASEBKGND消息处理
2、在OnInitDlg()中:
3、消息处理函数中
这样就可以了。学习了一段时间的DirectShow,也遇到了各种各样的问题,应该说是自己慢慢摸索过来的,走了很多的弯路。以后争取多写一些自己的经验,以给正在学习或者以后会学习的人。也望发现新的问题的朋友留言提问,互相交流学习~