可能你很少碰到这样的开发需求,所以本文属于”课外阅读”级别。
有两种方式启用垂直工具栏,一种是指定通用的 CCS_VERT 标志,另外一种,比较罕见:指定工具栏所特有的扩展属性 TBSTYLE_EX_VERTICAL。
问题来了,为什么会存在两个标志来做同一件事情?
因为我们搞砸了。
当初设计 TBSTYLE_EX_VERTICAL 的人没有意识到其实已经有一种通用而简单的方法了(就是上面所说的 CCS_VERT 标志),更糟糕的是,工具栏的某些属性由 CCS_VERT 控制,而另外一些则由 TBSTYLE_EX_VERTICAL 控制。
所以,如果你希望在 Windows XP 系统上启用一个垂直工具栏,则你可能需要同时设置这两个标志。
事情还没完。
因为这个错误已经铸成,我们不得自动化的同时启用这两个标志,也就是如果系统检测到开发者设置了 CCS_VERT,则会自动加上另外一个 TBSTYLE_EX_VERTICAL,反之亦然。
这个自动化机制可以确保开发者始终都会得到一个统一的工具栏呈现,而不会因为只设置了一个标志并忘记另外一个所带来的不一致行为。
但总的来说,确实是我们的设计失误,因为还有一些开发者就是希望故意只设置其中一个标志,从而得到他们希望的效果,在这种情况下,因为我们的自动化同步机制,他们没法得到他们想要的。
对此,我们很抱歉。
我可以立即联想到先发制人且尖酸刻薄的批评:”瞧,这就是为什么 Windows 垃圾的原因。”
总结
所谓人无完人,没有人是完美的,也没有代码是完美的。
我们的目标是:吸取教训,绝不再犯同样的错误。
最后
Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。
本文来自:《Why are there both TBSTYLE_EX_VERTICAL and CCS_VERT?》