有时也想吐槽
前几天在学习DShow的BaseClasses框架时,就很想吐槽了,输入的IPin接口和输出的IPin接口明显是两个不同的接口,却被定义成了同一个接口,调试某一个filter时接口中的某些函数根本就不会访问到,有没有?既然com不是真正的c++对象模型,还没人见过IDL生成的接口头文件中有多重继承的接口吧,为神马一开始不把接口定义的好一点,真不想最后看到一个类似IWebBrower跟IWebBrowser2这种加数字后缀的接口让人很烦躁,继承CAMThread和CBaseOutputPin的CSourceStream尼玛run方法本来以为是继承的,最后发现只是一个同名的重载函数,都没有被引用到,怪不得断点一直打不上去的呀,有没有搞错啊……某些逻辑莫名奇妙有没有?Baseclasses中的类只是dshow的一部框架,如果想自己重写一定先要熟悉这里面的接口。微不足道的吐槽,也许只是一时心态不很好。
最后想批评微软真的太重视com了,让开发者都远离了相对稳定的API去理解这些不可能稳定的下来的接口是一件不能说没有好处,可能还有很多缺陷的事情。