文档详情

MFC AppWizard生成应用程序基本框架分析.doc

发布:2017-11-25约6.74千字共9页下载文档
文本预览下载声明
MFC AppWizard生成应用程序基本框架分析基本框架分析 2 1.应用类CHelloworldApp 2 2.主窗口框架类CMainFrame 3 3.文档类CHelloworldDoc 4 4.视图类CHelloworldView 5 HelloWorld程序编写实例 6 1. 定义变量 6 2. 初始化变量 6 3. 输出字符串 7 摘要:在Visual C++中用MFCAppWizard帮助程序员快速生成应用程序框架,这在一定程度上实现了软件的自动生成和可视化编程。最基本的MFC应用程序框架由CXApp、CMainFrame、CXDoc和CXView类组成(X代表工程名称)。AppWizard是面向对象程序设计发展和工业化的产物。 MFC(Microsoft Foundation Class,微软基础类库)封装了大部分Windows API(Application Programming Interface)函数,大大简化了程序开发者的工作量,充分的重用代码,提高了程序开发效率。在Visual C++中还提供了ClassWizard,它利用Application Framework技术调用MFC库来建立程序需要新类、添加、修改各种消息和消息映射。 我最近刚接触MFC Application Framework,把我一点浅显的经验拿出来与大家交流。本文通过分析一个很简单的单文档程序来剖析MFC AppWizard生成应用程序基本框架。因为本文目的是MFC AppWizard生成应用程序基本框架的分析,所以就不再描述Application Framework及一些相关的技术。本示范程序用Visual C++6.0在Windows XP平台上编译制作。本示例程序的功能是在窗口中域输出“hello word!”字符串。为了便于描述,后文称这个示例程序为helloworld程序。 Visual C++6.0生成这个helloword程序基本框架的操作过程很简单。在Visual C++6.0的集成开发环境中,单击File弹出式菜单的New菜单项,系统会弹出一个New对话框,选中Projects标签,在对话框的左边会出现一个可供选择的项目列表,右边Project name编辑框里输入向新建项目名称helloworld,Localtion编辑框里输入保存项目的路径。从项目列表中选择MFCAppWizard(exe)项,单击OK按钮,进入MFC AppWizard-Step1对话框。应用程序类型选择Single document(单文档类型),选中Document/View architecture support(文档/视图结构支持)复选框,语种选择“中文[中国](APPWZCHS.DLL)”项,然后点击Finsh按钮,这样就生成了helloworld程序的基本框架了。框架仅仅是框架,还不具备我们所要求的功能——在程序的窗口中输出“hello world!”字符串。当然这正是我们剖析MFC AppWizard生成应用程序基本框架的目的所在,明白它的结构和接口再实现我想要的功能就很简单了,可谓水到渠成。 MFC AppWizard为我们生成了4个类CHelloworldApp、CHelloworldDoc、CHelloworldView、CMainFrame以及它们的实现代码,并巧妙地将这些代码结合在一起。下面我们开始真正的分析了。1.应用类CHelloworldApp CHelloworldApp类的作用是完成主窗口框架的构造和显示工作,并处理消息,他同意管理程序收到的所有消息,然后把相应的消息发给相应的对象。 Windows总要求每个应用程序都有一个主函数main或WinMan,但我们会发现CHelloworldApp类的代码中没有main或WinMain,这是因为它被隐藏到应用程序框架的内部了,Windows会自动调用它。在CHelloworldCApp中有一个虚函数InitInstance,它是作为用户看得见的应用程序的入口函数来完成应用程序的初始化工作,它的主要部分代码如下所示(在helloworld.cpp文件中): BOOL CHelloworldApp::InitInstance() { //省略部分代码 //以下进行单文档模版的创建及初始化 CSingleDocTemplate* pDocTemplate;?//定义一个单文档模板指针变量 pDocTemplate = new CSingleDocTemplate(?//新建一个单文档模板对象 IDR_MAINFRAME,?//菜单等资源标示号 RUNTIME_CLASS(CHelloworldDoc),?//文档类 RUNTIME_CLASS(CMainFrame
显示全部
相似文档