|说说Shell动画控件的限制

|说说Shell动画控件的限制

在桌面外壳(Shell)通用控件库中 , 有一个大家不怎么用到的动画控件(Animation Control) 。 但是 , 动画控件只能支持很少一部分的AVI文件 , 也即:在动画控件中能使用的AVI文件必须符合下列要求:
> AVI文件必须是非交叉的(Non-Interleaved) 。
> AVI文件只能包含一个视频流 。
> AVI文件最好不要带上音频流 。
> AVI文件最好不要使用调色板修改 。
> AVI文件只能是未经压缩的 , 或者是使用BI_RLE8算法压缩的 。
为什么会有如此多的限制?
因为我们设置动画控件的目的 , 主要是用来显示一些简单的动画 。 如果你手上有一个比较复杂的动画文件 , 则你应该考虑使用更加高级的动画控件 , 例如MCIWnd窗口类 。
我们认为 , 将所有AVI高级播放功能添加到外壳动画控件中不会有任何好处 , 结果将只是 MCIWnd的一个毫无意义的克隆 。
当我们设计复杂组件的简单版本的时候 , 请牢记一点:你必须抵制将原始组件的所有功能都添加到这个简单组件的诱惑 。如果你屈服了 , 那么你最终会得到一个组件 , 它可以完成原始组件所做的一切 , 即使你本来的目标是实现一个更简单的版本 。
那你为什么写它? 你花了几个月的时间写一些已经存在的东西 。
总结有时候 , 为了给用户带来更多 , 我们需要舍弃一些东西 。
少 , 即是多 。
最后Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一 , 里面有很多关于Windows的小知识 , 对于广大Windows平台开发者来说 , 确实十分有帮助 。
本文来自:《Limitations of the shell animation control》
【|说说Shell动画控件的限制】