当前位置:C++技术网 > 资讯 > Window窗口类和C++类的区别和联系分析

Window窗口类和C++类的区别和联系分析

更新时间:2015-06-25 17:45:02浏览次数:1+次

    窗口类与C++类不一样,不要混为一谈。初学者极其容易将两者混淆,也很不容易分清楚。曾经我就是这样的,嘿嘿,见笑了。然后就下决心研究MSDN英文版的文档,挖出了不少很有价值的东西,本篇就是其中一个,分享给大家。这些东西在网上的资料很少。如果不认真研究MSDN,还真很难了解到这些知识。当时研究MSDN是不停的看,不停的做标记,以免迷路了。MSDN就是一座森林,一不小心就会找不到路线,然后就会失败。其实英文并不难,都是常用的句法,熟悉了就好了。
首先,给大家辨析清楚窗口类和C++类,然后再把窗口类的三种解释出来。
    C++类就是用C++语言实现的类,可以自定义数据成员和方法,并带有面向对象特性的类型。这个相信大家清楚。而窗口类,并不是想C++类一样的东西,但是又颇为相似,所以微软才称它为窗口类。
    窗口类也是一种类型,而这个类型是与窗口结合起来的类型。就比如,汽车的模型。模型就是一种类型,汽车模型、玩具模型都是一种类型,所以,窗口类型就是一个模型,即一种类型。通过这个窗口类就可以生成一个和窗口类定义的一个窗口,窗口类就是一个模板,用来生成一个具体的窗口的。
    而在系统内部,窗口类有多种,都存储在系统的窗口类表中的,具体的我们不用细究。然后我们需要知道的是,窗口类则是使用一个结构体数据结构来存储的,这个结构体就是一种基本模型,结构体中的取值不一样,就得到不同的具体的衍生模具,这个衍生模具就是具体的类型,比如按钮窗口类、组合框窗口类都是具体的窗口类。而这些窗口类都是都是使用结构体来存放各个成员的。这是事先就存储在系统的窗口类表的,以后程序要生成窗口,就调用具体的API函数,API函数则根据传入的参数找到对应的窗口类,比如Button则找到按钮(Button)类,生成的窗口就是按钮,如果传入的是组合框,则生成的是组合框。以前或许你并不清楚为什么这些参数传进去就得到了这么个窗口或者控件,都是在窗口类表找到的。系统根据这个窗口类,进而绘制出对应的窗口。
    之所以称为窗口类,就是基于这么一个模板的概念,就是一个类型,就是一个类,而反应在实现基础上,是结构体。而结构体也可以理解为一个具有公有访问权限的类。所以,按照以上的解释,窗口类与C++类的区别是很明显的,同时,联系也是很紧密的。
    窗口类和C++类的区别在于窗口类是系统全局的,实现存储好的各个窗口模板,只要传入对应的参数,就可以让系统创建对应的窗口。而C++类则是应用程序中使用的,完全有程序员自己定义的。虽然各种库封装了,但是对应系统来说,还是应用程序自己定义的。而系统是没有C++类的,而只有结构体作为类的代码,不是C++中的类。
    窗口类和C++类的联系在于C++类最初的模型是结构体,所以说,窗口类可以理解为C++类的原始形式,这也是结构体与C++类的关系。一切只因为窗口类就是使用结构体来实现,就基本的思想还是一样的,这样就让大家产生了类似但又说不清楚的原因。
    相信以上的分析,一定会让大家对久久没有分清楚窗口类和C++类的有了一个清晰的认识。
    话说,窗口类和C++类的区别和联系就是在总结窗口类的三种类型说明写本文时写着写着就明了了,哈哈哈,又是额外的收获,快哉!本篇篇幅又变长了,窗口类的三种类型,就在下一篇介绍了,敬请关注。