第4MFC编程 41MFC概述 42MFC和win32 43 OBjects类 44消息映射的实现 45MFC对象的创建 46应用程序的退出
第4章 MFC编程 1 4.1 MFC概述 4.2 MFC和Win32 4.3 CObject类 4.4 消息映射的实现 4.5 MFC对象的创建 4.6 应用程序的退出
MFC编程 ·MFC类库是C++类库,构成了MFC编程框架。这些类分别封 装了Win32应用程序编程接口、应用程序的概念、OLE特性 ,以及ODBC和DAO数据访问功能。 OLE-- bject Linking and Embedding(对象链接与嵌 入)一种面向对象的技术,可以开发重复使用的软组件。 ODBC-- Open Database Connectivity(开放数据库连 接),是为解决异构数据库间的数据共享而产生的,是基于 Windows环境的对数据库访问的一种接口标准。 DAO-- Data Access object(数据访问对象),是一个 面向对象的数据库接口, Microsoft Jet数据库引擎。 MFC对象与 Windows对象有不可分割的关系。 Windows对 象是Win32下用句柄表示的 Window操作系统对象;MFC 对象是C++对象,是一个C++类的实例。两者有很大的区别 ,但联系紧密
MFC编程 • MFC类库是C++类库,构成了MFC编程框架。这些类分别封 装了Win32应用程序编程接口、应用程序的概念、OLE特性 ,以及ODBC和DAO数据访问功能。 • OLE------Object Linking and Embedding(对象链接与嵌 入)一种面向对象的技术,可以开发重复使用的软组件。 • ODBC------Open Database Connectivity(开放数据库连 接),是为解决异构数据库间的数据共享而产生的,是基于 Windows环境的对数据库访问的一种接口标准。 • DAO------Data Access Object(数据访问对象), 是一个 面向对象的数据库接口,Microsoft Jet 数据库引擎。 • MFC对象与Windows对象有不可分割的关系。Windows对 象是Win32下用句柄表示的Windows操作系统对象;MFC 对象是C++对象,是一个C++类的实例。两者有很大的区别 ,但联系紧密
41MFC概述 41MFC是一个编程框架P85 MFC应用程序框架,简称MFC框架,是由MFC ( Microsoft Foundation Class library)中的各种类结合起来 构成的。MFC框架从总体上定义了应用程序的轮廓,并提供了 用户接口的标准实现方法,程序员只须通过预定义的接口把具 体应用程序特有的东西填入这个轮廓,就能建立 Windows下的 应用程序
MFC应用程序框架,简称MFC框架,是由MFC (Microsoft Foundation Class Library)中的各种类结合起来 构成的。MFC框架从总体上定义了应用程序的轮廓,并提供了 用户接口的标准实现方法,程序员只须通过预定义的接口把具 体应用程序特有的东西填入这个轮廓,就能建立Windows下的 应用程序。 4.1 MFC概述 4.1.1 MFC是一个编程框架 P85
41.1MFC是一个编程框架 MicrosoftⅤ isual o++提供了相应的工具来完成这个工作 用应用程序向导( App wizard)可以生成应用程序的骨架文件 (代码和资源等);用资源编辑器可以直观地设计用户接口; 用类向导( Class Wizard)可以将代码添加到骨架文件;用编 译器可以通过类库实现应用程序特定的逻辑。MFC实现了对 应用程序概念的封装,把类、类的继承、动态约束、类的关系 和相互作用等封装起来
Microsoft Visual C++提供了相应的工具来完成这个工作: 用应用程序向导(AppWizard)可以生成应用程序的骨架文件 (代码和资源等);用资源编辑器可以直观地设计用户接口; 用类向导(ClassWizard)可以将代码添加到骨架文件;用编 译器可以通过类库实现应用程序特定的逻辑。MFC实现了对 应用程序概念的封装,把类、类的继承、动态约束、类的关系 和相互作用等封装起来。 4.1.1 MFC是一个编程框架
411MFC是一个编程框架 1.MFC类库封装的内容P86 MFC类库是C++类库,构成了MFC框架。 (1)对Win32应用程序编程接口的封装 MFC将每一个 Windows对象封装成一个相应的C++对象。 (2)对应用程序概念的封装 使用SDK编写 Windows应用程序时,总要定义窗口过程, 注册 Windows class刨建窗口等等,要做许多处理工作。 MFC封装了这些处理,替程序员完成这些工作
1.MFC类库封装的内容 P86 MFC类库是C++类库,构成了MFC框架。 (1) 对Win32应用程序编程接口的封装 MFC将每一个Windows对象封装成一个相应的C++ 对象。 (2) 对应用程序概念的封装 使用SDK编写Windows应用程序时,总要定义窗口过程, 注册Windows Class,创建窗口等等,要做许多处理工作。 MFC封装了这些处理,替程序员完成这些工作。 4.1.1 MFC是一个编程框架
41MFC是一个编程框架 (3)对 COMOLE特性的封装 OLE(对象的链接与嵌入)建立在COM(组件对象模型) 之上,由于支持OLE的应用程序必须实现一系列的接口 ( Interface),因而相当繁琐。MFC的OLE类封装了OLE API大量的复杂工作,提供了实现OLE的更高级接口。 (4)对ODBC功能的封装 MFC封装了 ODBCAPI的大量的复杂的工作,形成了与 ODBC之间接口的高级C++类,提供了一种方便的访问数据 库的编程模式
(3) 对COM/OLE特性的封装 OLE(对象的链接与嵌入)建立在COM(组件对象模型) 之上,由于支持OLE的应用程序必须实现一系列的接口 (Interface),因而相当繁琐。MFC的OLE类封装了OLE API大量的复杂工作,提供了实现OLE的更高级接口。 (4) 对ODBC功能的封装 MFC封装了ODBC API的大量的复杂的工作,形成了与 ODBC之间接口的高级C++类,提供了一种方便的访问数据 库的编程模式。 4.1.1 MFC是一个编程框架
411MFC是一个编程框架 2.MFC类的继承关系P86 MFC将众多类的共同特性抽象出来,设计出一些基类, 作为实现其他类的基础。有两个类十分重要。 CObject是MFC的根类,绝大多数MFC类是从它派生 的。 CObject实现了一些重要的特性,包括动态类信息、动 态创建、对象序列化、对程序调试的支持等等。所有从 CObject派生的类都将具备或者可以具备 Cobject所拥有的特 性
2.MFC类的继承关系 P86 MFC将众多类的共同特性抽象出来,设计出一些基类, 作为实现其他类的基础。有两个类十分重要。 CObject是MFC的根类,绝大多数MFC类是从它派生 的。CObject 实现了一些重要的特性,包括动态类信息、动 态创建、对象序列化、对程序调试的支持等等。所有从 CObject派生的类都将具备或者可以具备CObject所拥有的特 性。 4.1.1 MFC是一个编程框架
41.1MFC是一个编程框架 另一个是 CCmdTarget类,它是从 CObject派生的。 CCmdTarget类通过进一步封装一些属性和方法,提供了消息处 理的架构。在MFC中,任何可以处理消息的类都是从 CCmdTarget类派生的 针对每种不同的对象,MFC都设计了一组类对这些对象进 行封装,每一组类都有一个基类,从基类派生出众多更具体的 类。这些对象包括以下种类:窗口对象,基类是Cwnd;应用 程序对象,基类是 Cwin thread;文档对象,基类是 Cdocument, 等等。程序员可以结合自己的实际,从适当的MFC类中派生出 自己的类,实现特定的功能,达到自己的编程目的
另 一 个 是 CCmdTarget 类 , 它是从 CObject 派 生 的 。 CCmdTarget类通过进一步封装一些属性和方法,提供了消息处 理的架构 。 在 MFC 中 , 任 何 可 以 处 理 消 息 的 类 都 是 从 CCmdTarget类派生的。 针对每种不同的对象,MFC都设计了一组类对这些对象进 行封装,每一组类都有一个基类,从基类派生出众多更具体的 类。这些对象包括以下种类:窗口对象,基类是CWnd;应用 程序对象,基类是CwinThread;文档对象,基类是Cdocument, 等等。程序员可以结合自己的实际,从适当的MFC类中派生出 自己的类,实现特定的功能,达到自己的编程目的。 4.1.1 MFC是一个编程框架
41.1MFC是一个编程框架 3.虚拟函数和动态约束P86 MFC建立了消息映射机制,以一种富有效率、便于使 用的手段解决消息处理函数的动态约束问题。 这样,通过虚拟函数和消息映射,MFC类提供了丰富 的编程接口。程序员在继承基类的同时,可以把自己实现的 虚拟函数和消息处理函数嵌入MFC的编程框架。MFC编程 框架将在适当的时候、适当的地方来调用程序的代码
3.虚拟函数和动态约束 P86 MFC建立了消息映射机制,以一种富有效率、便于使 用的手段解决消息处理函数的动态约束问题。 这样,通过虚拟函数和消息映射,MFC类提供了丰富 的编程接口。程序员在继承基类的同时,可以把自己实现的 虚拟函数和消息处理函数嵌入MFC的编程框架。MFC编程 框架将在适当的时候、适当的地方来调用程序的代码。 4.1.1 MFC是一个编程框架
41.1MFC是一个编程框架 4.MFC的开发模板P87 MFC实现了对应用程序概念的封装,实现了类、类的继 承、动态约束、类的关系和相互作用的封装。这样封装的结 果是为程序员提供了一套开发模板,罗列在应用程序向导 App wizard中。针对不同的应用和目的,程序员可以采用不 同的模板。例如,SD咩文档应用程序模板,MD多文档应用 程序模板,规则DLL应用程序模板,扩展DL应用程序模板, OLE/ ctive应用程序模板,等等。这些模板都采用以文档 视图为中心的思想,每个模板都包含一组特定的类
4.MFC的开发模板 P87 MFC实现了对应用程序概念的封装,实现了类、类的继 承、动态约束、类的关系和相互作用的封装。这样封装的结 果是为程序员提供了一套开发模板,罗列在应用程序向导 AppWizard中。针对不同的应用和目的,程序员可以采用不 同的模板。例如,SDI单文档应用程序模板,MDI多文档应用 程序模板,规则DLL应用程序模板,扩展DLL应用程序模板, OLE/ActiveX应用程序模板,等等。这些模板都采用以文档- 视图为中心的思想,每个模板都包含一组特定的类。 4.1.1 MFC是一个编程框架