工程名为:StudyFrame
(1) StudyFrame.cpp中CStudyFrame theApp; 这里声明了一个CWinApp的全局变量,因而会先进入到CWinApp的构造函数中。CStudyFrameApp类中定义了一个bool m_bHiColorIcons; 不知何用,在构造时赋成了true。回来后这个构造函数中只有一条语句m_bHiColorIcons =TRUE;暂不知何用。关键的来了,接下来会到哪里呢?我去,到了C运行时库了,这犀利了,我怎么跟踪。跳转(10)。
(2) 调用父类的构造函数,也就是CWinAppEx的构造函数,这个构造函数里仅仅是设置了一系列的初始值,没有另外生成对象,也没有调用别的什么函数。
(3) CWinAppEx是CWinApp的子类,因而又调用CWinApp的构造函数,跳转(4)。回来后,设置了一系列的值,回到(1)。
(4) CWinApp是CWinThread的子类,因而又调用CWinThread的构造函数,跳转(5)。回到CWinApp中,先给App赋名字CWinApp::CWinApp(LPCTSTRlpszAppName),是个带参数的构造函数。参数就是名字,当然可以是NULL。之后,调用全局函数AFX_MODULE_STATE*pModuleState = _AFX_CMDTARGET_GETSTATE();这又是一个什么结构体?反正是得到了一个状态对象。之后AFX_MODULE_THREAD_STATE*pThreadState =pModuleState->m_thread;这又是个什么结构体,得到了线程状态。pThreadState->m_pCurrentWinThread =this;线程状态的一个变量赋成了这个CWinApp。CWinApp的两个成员m_hThread = ::GetCurrentThread();m_nThreadID = ::GetCurrentThreadId();m_hThread,m_nThreadID是从CWinThread继承来的,代表了当前线程。又设置了一系列的值,包括一些定义为宏的函数。回到(3)。
(5) CWinThread是