上一篇 | 下一篇

学习MFC框架如何创建的过程

发布: 2008-6-26 13:45 | 作者: admin | 来源: | 查看: 2次

很久没有使用MFC了,以至于都忘记MFC框架复杂的窗口、文档、视的创建过程

了。

下面我们跟踪一个MFC MDI的应用程序,来温习或学习一下。

使用AppWizard创建一个MDI应用程序,我创建的应用程序

叫MD99vest,这样MFC生成了如下的类:

类名

作用

CMD99vestApp

派生于CWinApp的应用程序类。

CMainFrame

派生于CMDIFrameWnd的MDI框架窗口类。

CMD99vestDoc

派生于CDocument的文档类。

CChildFrame

派生于CMDIChildWnd的MDI子窗口类。

CMD99vestView

派生于CView的文档显示类。

在运行时刻,CMainFrame, CChildFrame, CMD99vestView的窗口关系如下面的表格示出:

CMainFrame

(Menu, Toolbar …)

MDIClient

CChildFrame

CMD99vestView

pDocument = *CMD99vestDoc (带有文档的指针)

[StatusBar]

其中,最外层的是顶层窗口CMainFrame,里面包含一个MDIClient窗

口。CChildFrame做为子窗口包含于MDIClient中(可以包含多

个),CChildFrame里面则是真实的文档表示窗口CMD99vestView了。

我们从这里开始:

// CMD99vestApp 初始化

BOOL CMD99vestApp::InitInstance()

做为CWinApp的派生类,通常需要重载InitInstance(), ExitInstance()两个函数,以完成应

用的初始化和退出。我们现在关心InitInstance中关于文档模板、窗口处理的部分,而忽略掉一些CommonControl,

OLE初始化部分。

整个InitInstance代码如下:

BOOL CMD99vestApp::InitInstance()

{

InitCommonControls(); // 这里删减了大量注释和错误处理

CWinApp::InitInstance();

AfxOleInit();

AfxEnableControlContainer();

SetRegistryKey(_T("应用程序向导生成的本地应用程序"));

LoadStdProfileSettings(4); // 加载标准 INI 文件选项(包括 MRU)

TRACE("Before

CMultiDocTemplate\n");

// 注册应用程序的文档模板。文档模

// 将用作文档、框架窗口和视图之间的连

[8] [9] [10] [11] [12] [13] [14]

[8] [9] [10] [11] [12] [13]

字号: | 推荐给好友

评分:0

我来说两句