《深入浅出 MFC》前两章读后心得
最近花了一周多的时间看了一下候俊杰编著的《深入浅出 MFC》这本书,看完了前三
章的内容。看完之后觉得晕乎乎的,好多地方不知所云,尤其是第三章的六大关键技术。
对于这六大关键技术,我确实不知道什么时候该去用它们。所以在没有针对性和目的性的
情况下看第三章内容,真的是很费力,也很茫然。所以下面就只对第一章和第二章的主要
知识点在理解的基础上做了一些归纳。
读书章节:
第一章:Win32 基本程序概念
1. windows 可执行文件(.exe)的生成过程,主要分为两个过程
1) 编译(Compiling):
C++编译器对工程中的所有源文件(.cpp)单独进行编译(Compiling)。在编译时,
先由预处理器对预处理指令(#include、#dene 等)进行处理,在内存中输出翻
译单元。编译器接收预处理的输出,将源代码转换成目标文件(扩展名为 obj 的
文件)。
2) 链接(Linking):
链接器将生成的目标文件和应用程序所用到的 C++函数库文件(.lib)一起链接生
成可执行文件(.exe)。
其中,应用程序所调用的库函数是在“执行时期”才链接上的,因此在“链接时期”就
需要先加载所需要的函数库。Windows 程序调用的函数可分为 C Run"mes 以及
Windows API 两大部分。
2.应用程序的运行过程
1) Windows 外壳(shell)侦测到一个运行的应用程序,调用加载器加载该应用程序;
2) 创建应用程序对象 theApp;
3) Windows 调用 C Startup Code,通过 Startup Code 调用 WinMain 函数,此函数即为
应用程序的入口;
4) 在 WinMain 函数中主要通过调用 InitApplica"on 和 InitInstance 两个函数注册窗口
类以及创建并显示窗口。其中,注册窗口类被封装在 InitApplica"on 函数中,而创
建窗口则被封装在 InitInstance 函数中。这种做法是有一定意义的:
a) 窗口类只需注册一次,即可供同一程序的后续每一个实例使用,只有第一个
实例才会进入 InitApplica"on 函数中;
b) 产生窗口是每个实例都必须进行的操作,因此,将它封装在每个实例都会进
入的 InitInstance 函数中。
5) 初始化工作完成后,WinMain 将进入所谓的消息循环(在 3 中将详细叙述消息循
环的机制);
6) 消息循环将获取的消息,发送到窗口的窗口函数中。窗口函数将对消息的种类进
行判断,从而确定消息处理的方式。
3.消息循环机制