微信号:cpp_coder

介绍:最专业的C/C++编程学习和程序员发展的综合平台.提供C/C++、汇编语言等、STL、MFC、QT等等学习、数据结构算法思维分析、各领域项目经验分享、资源下载、招聘和资讯的综合服务.

虚拟键码的所蕴含的Windows系统的设计思想之一

2016-01-07 23:08 cpp_coder

当你学习Windows程序开发的时候,你会发先微软的Windows系统设计的很好。其中,在虚拟键码这里也有提现。那么到底体现的是什么思想呢?

正如虚拟键码名称所透露出的信号,虚拟这个词从来都让人琢磨不透。我这里就讲讲虚拟键码的意思。
我们知道,虚拟键码是用来描述键盘上的按键的ID的。也就是说,得到这个虚拟键码,你就知道了按下了哪个按键。很多人以为那为什么不直接叫做键码呢?为什么叫做虚拟键码呢?

是的,想必其中必然有什么思想蕴含其中。只是发问的人没有站在这个思想之上,所以总是不清楚为什么。微软的系统是经过好多年的考验的,这样设计,也体现Windows系统的设计理念是很先进的。为什么这么说?

虚拟键码所蕴含的设计思想就是分层,就和网络协议的分层模式一样。分层思想让各层工作在各自的层次,通过接口提供支持。所以,上层的不需要考虑下层的具体实现和情况,只要接口保持一致接口。
我们现在很多的系统设计都采用分层的思想。Windows就是这样的。而且越是大的系统越要这么设计。分层的思想让系统扩展性更好,兼容性更高。
那么虚拟键码,也就因此得到了这个称号!本来直接用一个标准键盘的按键得到一个键码,就不用虚拟了。然而,键盘却可以有很多种,每一种键盘,按键数量,布局等都不一样。所以,微软不能将这个键码与硬件直接关联,因为这会让扩展性很差,你必须使用标准的键盘才能够正确的使用。然而各种设计的键盘都有很好的应用,难道因为这个就让人唾弃Windows系统不好,岂不太不划算了。
所以,Windows中,使用一套逻辑的编号,指定对应的键码。这个逻辑的编号,并不真正的对应键盘的一个物理按键。这个对应关系是由键盘驱动程序来和Windows系统对接。或者说,Windows提供一个标准的接口,就是这么多的虚拟键码,设计的虚拟键码的按键很全,包含了各种键盘的按键,还预留了一些按键的键码。当你的键盘接入后,键盘只要将按键对应到这个虚拟键码接口。这样,Windows程序员也不用管那么多的键盘类型,只知道虚拟键码是哪个按键即可。这样大大简化了开发流程,形成与硬件无关的开发方式。对于键盘的发展来讲,也不会受标准键盘的制约,只要提供标准的接口,即可以接入Windows系统使用。
那么这也是虚拟键码的名称由来。实际上蕴含的就是一种分层的设计思想。我们学习Windows其实更多应该领略这些思想,然后再可以轻松的学会Windows中的各种技术。思想作为指导,对学习有很大的帮助哦。


关注微信号,回复“干货”获取干货下载地址(干货即项目源码哦!)或者登陆个人中心下载


 
CPP技术网 更多文章 宏、常量、枚举、结构体和共用体对比分析之常量 宏、常量、枚举、结构体和共用体对比分析之结构体 C/C++声明定义初始化和赋值独家剖析深刻理解 mfc的消息机制,多窗口的互动 MFC中的窗口类:C++类与窗口句柄的结合深入浅出分析
猜您喜欢 总理说服务业过半,互联网+服务业有哪些蓝海? 常量0是几进制的数? 单表60亿记录等大数据场景的MySQL优化和运维之道 | 高可用架构 企业级应用的高可靠运维实践与DevOps(一) PostCSS深入学习:你需要知道什么