翻译《The Old New Thing》- What‘s the deal with the EM_SETHILITE message?

What's the deal with the EM_SETHILITE message? - The Old New Thing (microsoft.com)icon-default.png?t=N7T8https://devblogs.microsoft.com/oldnewthing/20071025-00/?p=24693

Raymond Chen 2007年10月25日


简要

文章讨论了EM_SETHILITEEM_GETHILITE消息在文档中显示为“未实现”的原因。这些消息最初在2002年为面包屑栏设计,但随着面包屑栏设计的变更,这些消息的功能被移除,消息编号被保留以避免构建失败。文章强调了同时开发库及其客户端时的现实问题,即在进行重大更改时需要分阶段进行,以确保所有客户端能顺利过渡。尽管这些消息现在没有效果,但它们仍然存在于公共头文件中,因为公共头文件不允许更改。

正文

        如果你查阅EM_SETHILITEEM_GETHILITE消息的文档,它们只会显示“未实现”。这是怎么回事?

        EM_SETHILITEEM_GETHILITE消息是在2002年为面包屑栏添加的。在那个时代,面包屑栏并不是你在Windows Vista中看到的样子,一系列带有下拉箭头的按钮,每个按钮代表层次结构中的一个级别。那时候的面包屑栏只是一个外观华丽的地址栏(即,一个编辑控件)。面包屑栏不会为层次结构中的每个级别都有一个按钮,而是如果你将鼠标悬停在路径组件上(或使用键盘选择它),它就会高亮显示该路径组件。面包屑栏没有下拉箭头,而是等待你将鼠标悬停,高亮的路径会自动展开以显示同级项目的菜单。

        面包屑栏的设计改变了,那个“外观华丽的地址栏”设计被放弃了。EM_SETHILITEEM_GETHILITE消息的功能被移除,但是为了避免在有人使用这些消息的情况下造成构建失败,消息编号被保留了下来。当然这些消息现在没有任何效果了,但至少产品仍然可以构建。使用这些消息的人可以按照自己的时间表逐渐放弃它们。

        这是同时开发库及其客户端的一个现实问题。如果你是负责库的人,并且你打算进行重大更改,你必须分阶段进行,以便所有的客户端都能顺利过渡。你不能自己更改所有的客户端,因为它们不属于你更改的范围,你可能也无法访问源代码。客户端属于其他团队,甚至其他公司。你必须与这些其他团队协调,并让他们知道你的过渡计划,以便他们可以将其纳入自己的时间表。

        EM_GETHILITEEM_SETHILITE消息仍然存在的事实只是从未被清理的遗留污垢。现在头文件中的内容是过渡计划的倒数第二阶段。最后阶段本应是完全从头文件中移除这些消息,但是“不允许对公共头文件进行更改”的截止日期在最后阶段执行之前就到了,现在这些消息在一个公共头文件中,它们必须永远保留在那里。即使它们什么也不做。

  • 8
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

0x0007

可不可奖励我吃只毛嘴鸡 馋😋

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值