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

news2024/10/6 12:27:31

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1695472.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言 | Leetcode C语言题解之第112题路径总和

题目: 题解: bool hasPathSum(struct TreeNode *root, int sum) {if (root NULL) {return false;}if (root->left NULL && root->right NULL) {return sum root->val;}return hasPathSum(root->left, sum - root->val) ||ha…

与用户沟通获取需求的方法

1 访谈 访谈是最早开始使用的获取用户需求的技术,也是迄今为止仍然广泛使用的需求分析技术。 访谈有两种基本形式,分别是正式的和非正式的访谈。正式访谈时,系统分析员将提出一些事先准备好的具体问题,例如&#xff0…

C++_string简单源码剖析:模拟实现string

文章目录 🚀1.构造与析构函数🚀2.迭代器🚀3.获取🚀 4.内存修改🚀5. 插入🚀6. 删除🚀7. 查找🚀8. 交换swap🚀9. 截取substr🚀10. 比较符号重载🚀11…

pod install 报错 ‘SDK does not contain ‘libarclite‘ at the path...‘

报错内容: SDK does not contain ‘libarclite’ at the path ‘/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_iphoneos.a’; 这是报错已经很明确告诉我们,Xcode默认的工具链中缺少一个工具…

Linux Tcpdump抓包入门

Linux Tcpdump抓包入门 一、Tcpdump简介 tcpdump 是一个在Linux系统上用于网络分析和抓包的强大工具。它能够捕获网络数据包并提供详细的分析信息,有助于网络管理员和开发人员诊断网络问题和监控网络流量。 安装部署 # 在Debian/Ubuntu上安装 sudo apt-get install…

爬虫100个Python例子优化

今天看到一个Python 100例的在线资源,感觉每个都需要去点,太费时间了,于是,使用Python将数据爬取下来,方便查看。实际效果如下: 。。。。。。 用了13分钟,当然,这是优化后的效果,如果没有优化,需要的时间更长。 爬取url如下: https://www.runoob.com/python/pytho…

Pytorch深度学习实践笔记1

🎬个人简介:一个全栈工程师的升级之路! 📋个人专栏:pytorch深度学习 🎀CSDN主页 发狂的小花 🌄人生秘诀:学习的本质就是极致重复! 《PyTorch深度学习实践》完结合集_哔哩哔哩_bilibi…

【数据结构与算法 刷题系列】移除链表元素

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:数据结构与算法刷题系列(C语言) 期待您的关注 目录 一、问题描述 二、解题思路 三、源代码实现 一、问题…

不靠后端,前端也能搞定接口!

嘿,前端开发达人们!有个超酷的消息要告诉你们:MemFire Cloud来袭啦!这个神奇的东东让你们不用依赖后端小伙伴们,也能妥妥地搞定 API 接口。是不是觉得有点不可思议?但是事实就是这样,让我们一起…

软件项目详细设计说明书实际项目参考(word原件下载及全套软件资料包)

系统详细设计说明书案例(直接套用) 1.系统总体设计 2.性能设计 3.系统功能模块详细设计 4.数据库设计 5.接口设计 6.系统出错处理设计 7.系统处理规定 软件开发全文档下载(下面链接或者本文末个人名片直接获取):软件开发全套资料-…

指纹识别概念解析

目录 1. 指纹是物证之首 1.1 起源于中国 1.2 发展于欧洲 1.3 流行于全世界 2. 指纹图像 3. 指纹特征 4. 指纹注册 5. 指纹验证 6. 指纹辨识 1. 指纹是物证之首 指纹识别技术起源于中国、发展于欧洲、流行于全世界。自20世纪以来,指纹在侦破刑事案件、解决诉…

06.逻辑回归

文章目录 Generate Model优化边界为线性证明损失函数比较逻辑回归不能用均方误差Generative v.s. DiscriminativeMulti-class Classification逻辑回归的限制自己找线性变换 Generate Model 假设样本符合高斯分布 即找 μ \mu μ和 σ \sigma σ 优化 共用 Σ \Sigma Σ减少…

Vue3实战笔记(45)—VUE3封装一些echarts常用的组件,附源码

文章目录 前言一、柱状图框选二、折线图堆叠总结 前言 日前使用hooks的方式封装组件,在我使用复杂的图标时候遇到了些问题,预想在onMounted中初始化echarts,在使用hooks的时候,组件没有渲染完,使用实例会出现各种各样…

MongoDB(介绍,安装,操作,Springboot整合MonggoDB)

目录 MongoDB 1 MongoDB介绍 MongoDB简介 MongoDB的特点 MongoDB使用场景 小结 2 MongoDB安装 安装MongoDB 连接MongoDB MongoDB逻辑结构 MongoDB数据类型 小结 3 MongoDB操作 操作库和集合 操作文档-增删改 操作文档-查询 MongoDB索引 小结 4 SpringBoot整合…

java -spring 15 配置类 ConfigurationClassPostProcessor

01Spring中定义的配置类 ConfigurationClassPostProcessor是一个BeanFactory的后置处理器,因此它的主要功能是参与BeanFactory的建造,在这个类中,会解析加了Configuration的配置类,还会解析ComponentScan、ComponentScans注解扫描…

C语言笔记21 •模拟atoi函数•

1.atoi的使用 atoi是将字符串转化为int类型数字的一个库函数 int main() { char str[] "123568"; int a; a atoi(str); /*将字符串转化为int型的数字*/ printf("%d\n", a); } 2.模拟atoi函数 #define _CRT_SECURE_NO_WARNINGS…

Mac JDK和SDK环境变量配置

一、Java JDK配置 1.下载并安装Java jdk1.8及以上,这个可以在网上自行搜索下载,这里不在详细描述 2.如果不知道JAVA_HOME的安装路径,可以输入命令查看:/usr/libexec/java_home -V ,如图 3.在终端输入命令&#xff1…

【openlayers系统学习】3.1-3.2彩色GeoTIFF图像渲染

一、彩色GeoTIFF图像渲染 Sentinel-2 卫星任务收集并传播覆盖地球陆地表面的图像,重访频率为 2 至 5 天。传感器收集多波段图像,其中每个波段都是电磁频谱的一部分。 2A 级 (L2A) 产品提供以下频段的表面反射率测量: BandDescriptionCentra…

【计算机毕业设计】030英语学习交流平台微信小程序

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

前端CSS命名书写格式

遵循此规则的好处: - 代码易维护,出现问题容易排查。 - 开发速度快