当前位置:C++技术网 > 资讯 > VS完全介绍-菜鸟到高手必学:3 类视图全面详解

VS完全介绍-菜鸟到高手必学:3 类视图全面详解

更新时间:2015-06-27 00:48:43浏览次数:1+次

    类视图是站住类的角度来观察项目的,对于面向对象开发语言开发的项目来讲,类视图太重要了。可以极大提高管理项目的便捷性。这里详细介绍了类视图的一些基本操作,帮助初学者快速熟悉使用。请打开VS对照学习。

    做C++开发,类视图是默认开启的。如果你在VS界面上没有看到类视图,那么请在主菜单中的“视图”中单击“类视图”打开类视图。
    一个项目作为一个节点,是解决方案的子节点。解决方案的方面,在《VS完全介绍-菜鸟到高手必学:解决方案资源管理器》和《VS完全介绍-菜鸟到高手必学:解决方案管理器使用完全指南》里已经做了详细介绍。如果不清楚,请看看解决方案部分。
    项目节点,可以展开,展开后可以看到各种类节点、映射节点、“宏和常量”节点、“全局函数和变量”节点。这里以类的角度,将这些全部区分开,每一个类一个单独的节点,全局函数和全局变量归并到一起,宏和常量也归并在一起,然后就是映射,归并到一起,都是分类管理。下面来依次介绍一下。

1.映射节点

    可以展开。它的所有子节点,就是这个项目的所有类中存在的消息映射宏。消息映射宏内部,包含了这个类拥有的消息映射的所有关联的事件和处理函数。
举个最简单的例子:

BEGIN_MESSAGE_MAP(CRepairHeadDlg, CDialog)
ON_BN_CLICKED(IDOK, &CRepairHeadDlg::OnBnClickedOk)
END_MESSAGE_MAP()
     以上代码是一个消息映射宏,以BEGIN_MESSAGE_MAP作为开始标识,以END_MESSAGE_MAP()作为结尾标识。详细的消息映射解释,参考《深入图解MFC消息映射,让你一目了然》和《MFC消息路由机制》等等。这里就不多述。
    映射节点中的所有这些子节点,以一个类的消息映射为一个节点,一一对应着。所以,可以双击映射子节点MESSAGE直接快速跳转到对应的类中的消息映射。因为这里都显示一个MESSAGE,所以看不出谁对应着谁。这里实际上没有多大用处,只是作为一个归类,每个地方给予一个归属而已。实际开发中,基本不看这里。

2.宏和常量
    此节点不能展开,单击此节点后,在下面的小窗口会自动显示项目中定义的所有宏定义和常量定义。宏定义包含了普通的宏定义,还包含了资源的宏定义。自己经常定义一些自定义的消息,通过这个宏和常量节点,可以快速找到已经定义的自定义消息。就不用去挨个的找,这里就可以快捷的定义。只要双击这些宏的名字。其实,一个好的工具要学会使用,才能真正的高效开发。不能什么都慢慢找,效率太低了,有一个好工具,要学着使用。学会也是分分钟的事情,但是不知道,那可以浪费很多时间。

3.全局函数和全局变量
    在面向对象的编程中,全局的函数和全局的变量,似乎显得有点孤独似的,不像面向过程语言里,全局变量都可以看作是老大的感觉。那法力无边,到处都可以使用。然而,在面向对象编程中,这种做法基本不受欢迎,除非必须用,否则很少用。一般可以将这种全局的函数和变量,放入类中,作为类的静态成员。效果是一样的,但是却有了一个归宿,而不是散乱放置。这对于管理上和使用上都是一个很好的方式。单击“全局函数和变量”节点,可以显示项目中所有的全局函数和变量。这些全局的函数和变量不属于任何一个类,属于文件级别的全局作用范围。这些也是帮助我们快速的定位这些函数和变量。
4.类节点
    上面三个,都是站在项目的角度,来观察所有的非类的东西。在类节点中,则是只观察这个类中的这些东西。一个类对应一个节点,展开这个节点,可以看到有映射、基类型和一个零散的节点。展开映射节点,也是看到一个MESSAGE节点,这个节点代表的是这个类的消息映射。如果这个类不是消息响应类,那么此映射子节点就不存在。双击此节点,即可显示此类的消息映射的内容。而基类型,就是当前类的基类。如果这类没有从任何其他类继承,那么此节点也就不存在。一般对话框类,都是继承与了一个基类。比如CDialog。继续展开CDialog类的基类,可以看到它继承于CWnd。以此类推,不断的展开,就可以看到这类的所有父级类的关系。在基类型中,还有一个派生类型,表示的是这个基类还被哪些类继承过,每一级父类都如此。CWnd又继承于CCmdTarget类,CCmdTarget类继承于CObject类。而CObject类就是这些类的始祖。通过这个可以观察一个类的实际的继承关系,以及这个父类(基类)被哪些类继承过。以前我总是用MSDN去查询一个类的继承关系图,实际上用VS的类视图就可以轻松搞定。而且还可以观察更多信息。当我们双击这些类名时,就会自动打开它的头文件,因此,我们就可以方便的看到这个类的所有基类的头文件,就知道当前类继承了哪些东西。从而可以一目了然,而不是井底之蛙。这样也不用MSDN去查,也查不出这样的关系。在代码里就可以轻松自如的看到这些关系和基类的声明定义。也可以看到基类和所有派生类的继承关系,以及当前类的父类的关系。父类就是基类的意思,两种叫法。
    类节点除了映射和基类型的子节点外,还有一些散乱的东西,这些就是类中的自定义类型等。比如说定义的结构体类型、枚举类型等。

    双击这个类的节点,就可以打开这个类的头文件,看到类的声明。在类视图的下面的小窗口中,单击一个类名,就可以看到它的所有成员函数和成员变量等,可以双击这些函数和变量快速定位到这个函数和变量定义的位置。定位后,可以看到已经高亮显示了。

    在头文件中,如果要快速看一个函数的定义,把光标单击放在这个函数上,然后右击,“转到定义”即可跳转到这个函数的定义的位置,在CPP文件中。如果是在其他类中定义的一个类型或者是其他类的类对象,那么通过“转到定义”,都可以快速查看它的定义的地方,一探究竟。然后,如果你在CPP文件中,看到一些变量或者函数,你不知道它声明是什么样的,那么右击这个变量或函数,“转到声明”,即可快速跳转到声明的位置。在VS中,任何一个变量和函数,只要有源码的,都可以通过这样的方式查看声明和定义。不管是类名、类型、函数、变量,等都可以这样查看声明和定义。这个技巧是非常常用,也是使用最为频繁的。然而很多初学者都不知道,虽然这个菜单经常在眼前,但是从未使用过。而很多明白的人,又不愿一纸说明,显得丢了自己的水准一样。不管怎么样,我觉得,既然一开始我知道使用,那么说明还有很多人不知道这样用,那么我也不顾是否有人会痛批没有水平,只愿给需要的人,请见谅。其他菜单都会慢慢介绍,如果你还是不懂,后面会懂得。

    还有一个问题,就是很多人一开始并不知道如何通过向导添加一个函数和变量,对于普通的函数和变量来说,右击类视图中的类名,“添加”->“函数”或者“变量”即可。至于类的添加、控件变量等,在后续文章会讲解。