您的位置:首页 > 其它

MFC应用程序调用顺序分析

2014-02-19 10:53 369 查看
开发环境:Visual Studio 2010

了解一个程序的调用关系和调用顺序,对一个编程人员来说是有必要的。下面将会以《Visual
Studio 2010——第一个Visual C++.NET程序》为例子进行分析。

首先,通过“类视图”查看本项目所包含的类,如图1所示。





图1 类视图
由图1可见,本项目主要的类有5个,其中和项目名称First直接相关的有3个,分别是CFirstApp、CFirstDocC和FirstView。只要知道这几个类的创建顺序,就可以知道本程序大致的运行流程。为了达到这个目的,可以在每个类的构造函数中设置断点,然后调试程序。
利用“解决方案资源管理器”查看本项目的头文件和源文件,如图2所示。



图2 解决方案资源管理器
通过查看图2中的各个头文件,可以知道图1中后面4个类分别在这些头文件中定义了,图2中的源文件则是对应于各个头文件的函数的实现。因此,可以在各个.cpp文件中的找到图1中后面4个类的构造函数,在里面添加断点,如图3所示。



图3 设置断点
设置好断点后,在菜单中选择“调试”》“启动调试”,如图4所示。



图4 启动调试
启动调试后,遇到第一个断点即会停止运行,这时记下是在那个构造函数中停止。然后,选择菜单“调试”》“继续”来继续调试,如图5,并且记下下一个停止的位置。如此直到运行完整个程序。



图5 继续调试
经过调试发现,各个类的创建顺序是:CFirstApp、CFirstDoc、CMainFrame、CFirstView。所以可以得出结论:在图2所有.cpp文件中,入口是First.cpp源文件,也即是和项目名同名的源文件!
然而,需要注意的是,First.cpp并不是整个工程中第一个得到执行的源文件。经过单步调试发现,第一个得到执行的源文件是appmodul.cpp,其次是其它一些在图2中所见不到的源文件,甚至在图2中的“外部依赖项目”中也找不到!经过查找发现,appmodul.cpp是在..Microsoft Visual Studio 10.0\VC\atlmfc\src\mfc中的一个源文件,这说明它是MFC的一个组成部分,而且是很底层的一部分,它在First.cpp之前运行。可推测,对于不同的项目,都是必须先运行appmodul.cpp,而且都是同一个appmodul.cpp!MFC程序的真正入口,参见《Visual
Studio 2010——创建新项目》。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: