单文档MFC程序的启动过程简化版

一、MFC程序的启动

1、定义和构造全局应用程序对象,CMyWinApp the App

这里有一些底层操作,有一个直接有用的结果是使得AfxGetApp能够返回theApp的地址。

2、调用WinMain函数:

这是编译链接的时候从外部链接进来的,确切的函数为AfxWinMain。

2.1 调用InitApplication();做一些底层初始化。是一个虚函数,可重载,但一般不重载;

2.2 调用InitInstance();是一个虚函数,一定要重载,否则什么都不做;

2.2.1 构造CSingleDocTemplate对象

因为文档类、框架窗口类和视类在MFC中被统一为一个文档模板类来进行管理,所以首先要生成一个文档模板对象,并将该对象以及以后可能会生成的其他文档模板对象统一由theApp来管理;

2.2.2 通过CWinApp::ProcessShellCommand来运行CWinApp::OnFileNew

生成文档类对象、框架窗口类对象和视类对象,并创建MainFrame和View窗口。详细见后面分析。

2.2.3 调用ShowWindow和UpdateWindow来显示更新窗口

2.3 调用Run();建立消息循环,是一个虚函数,但一般不重载。

二、如何新建一个文档,并产生窗口。其本质是先获取文档模板类指针,然后调用CSingleDocTemplate::OpenDocumentFile(NULL)

1、调用CDocTemplate::CreateNewDocument(),创建文档类对象

2、调用CDocTemplate::CreateNewFrame(pDocument, NULL),注册窗口类,创建框架窗口和视窗口。详细见后面分析

3、调用CDocTemplate::InitialUpdateFrame()完成其他操作

三、如何注册框架窗口类(CFrameWnd)的窗口类(Window Class),并创建框架窗口

1、调用AfxRegisterClass()注册窗口类,期间调用了几次PreCreateWindow(cs)来修改窗口类格式

2、调用Create创建窗口

2.1 调用PreCreateWindow(cs)修改cs,注册窗口类;

2.2 调用::CreateWindowEx创建框架窗口,最后发送WM_CREATE消息;

2.3 OnCreate函数响应消息,其中会创建视窗口。详细不分析了

posted @ 2008-05-21 10:03  糖果的二师兄  阅读(1209)  评论(0)    收藏  举报