第2讲MFC程序设计基础(new).ppt

第2讲MFC程序设计基础(new)

MFC程序设计基础 重点:MFC的特点,MFC中的类和应用框架程序 难点:MFC的消息处理和运行模式 掌握:简单MFC程序的编制 2.1MFC概述 什么是MFC? 1)最初的Windows程序设计: 2)C++ 程序设计(面向对象) Microsoft Foundation Class. C Windows API C++ 类 MFC 是Microsoft对API进行封装形成的类库。 注意:MFC并未对所有的API都进行了封装。 2.1.1 MFC与应用程序框架 MFC定义了 1)C++类库 2)一套完整的WINDOWS应用程序模型。 该模型的作用有二: 1、定义MFC类间的关系。 2、定义标准的程序结构。 应用程序框架:MFC定义的这个标准的程序结构 及与此相关的程序代码被称为应用程序框架。也 叫框架程序(不需要用户编写代码也可以运行)①。 应用程序框架的好处 1、提高Windows应用程序的编程效率: 框架实现了大量的标准功能。 2、可以集中精力在实现自己的特殊功能上 3、利于软件开发的标准化。 注意:框架并不限制直接调用API函数。 2.1.2 MFC的组成 MFC主要由一组类,一些宏以及若干个全局函数组成。作用②: 1、一些类封装WINDOWS API的常用功能 2、一些类封装了一些常用的数据结构以及其操作方法 3、还包含大量的宏 4、MFC保留了一些全局函数用来完成一些常用操作 2.1.3 MFC中的类 MFC中的类分为两种(见书P20图2.1): 从CObject类派生的类(绝大部分)③ 没有父类的非派生类④ CObject派生类包含Windows API的接口类: CWinApp、 CWnd、 Cmenu 、CGdiObject 、CDC 2.2 MFC程序的特点 MFC编程与Windows API编程的异同之处: 相同点: 不同点: 数据类型、标识符的命名方法和程序的组成于API基本相同。 1、增加了MFC的数据结构。如POSTION、LPCRECT等 2、程序使用的库函数增加了MFC类库文件,如MFCXX.LIB (6.0对应4.2) 3、头文件部分包含MFC类使用的头文件,如afxwin.h 4、处理消息的方法不同(面向对象方法) 5、运行方式不同,MFC使用框架。 注意:MFC兼容API,即MFC可以直接调用API。 2.2.1 MFC与消息处理 1、在MFC程序中,API程序的WinMain() 和 消息循环被封装到MFC类库中,不需要用户进行 干预。我们在MFC程序中看不到这些相应的代码了。 2、窗口函数也看不到了,窗口由窗口对象来管理, 消息由该窗口对象的成员函数处理。 3、在MFC编程中,最主要的任务是编写消息处理 函数。 2.2.2 MFC运行模式 MFC使用两个类来封装WinMain和窗口函数的功能⑤ MFC使用CWinApp类来封装WinMain ⑥ MFC使用CWnd类来封装窗口的各种操作⑦ 由于框架隐藏许多内部实现,用户可以看到的MFC程序运行模式如下图 其他对象 CWinApp对象 CWnd对象 系统 消息③ 消息 消息③ 创建② 创建② 创建 ① 消息④ 2.3.简单的MFC程序 1、包含afxwin.h头文件 此头文件包含了MFC包含的各种类,宏,全局函数,还包还了Windows.h ? 2、派生应用程序类 CWinApp类封装了应用程序的初始化、运行和终止等功能,所以基于框架的应用程序必须有且只有一个CWinApp类及其派生类的对象。 3、派生窗口类 CWnd::OnPain成员函数负责处理发给窗口的WM_PAINT消息,可以实现窗口绘制,因此需要对CWnd派生子类,并重载(重写)OnPaint成员函数。 在MFC中,CWnd的一些派生类对CWnd实现了更高的封装,不仅添加了功能,而且使用更方便,如CFrameWnd。本例的窗口类为了使用更方便就是从CFrameWnd进行派生的。 另外,MFC程序中需要使用 DECLARE_MESSAGE_MAP()宏为类添加消息处理能力。 4、建立窗口 在窗口类的构造函数中使用从父类继承来的Create成员函数来建立窗口。该函数的参数说明见书P24。 在重载的InitInstance成员函数中添加建立程序窗口的代码,程序在初始化时完成窗口的建立(new 一个窗口类,创建窗口类对象的同时,构造函数创建窗口)和显示(调用ShowWindow

文档评论(0)

1亿VIP精品文档

相关文档