第5讲 MFC 编程基础1
发布时间:2021-06-08
发布时间:2021-06-08
C++ MFC
第7章
MFC编程基础
1、MFC概述
2、MFC层次结构及其子类功能3、MFC应用程序架构
4、基于框架的MFC应用程序分析
C++ MFC
7.1 MFC概述MFC:Microsoft Foundation Class首先:它是一个类库、功能是控制整个计算 机系统。 其次:它是一个面向对象的应用程序框架, 程序员可以使用这一框架创建 Windows应用程序。 同时:MFC的组织是以C++类层次形式组织 起来的,几个高层类提供一般功能, 而低层类实现更具体的功能,每一个低 层类都是从高层类派生而来,因此继承 了高层类的功能。
C++ MFC
所以:MFC是一种类的层次结构, 它提供了一个应用程序开发框架, 此框架称为文档/视图架构。 它对应的是Windows系统目录下 的一系列mfc*.dll文件。
C++ MFC
MFC的实质 MFC就是利用面向对象的思想,将数 据类型与Windows大部分API函数封 装起来的一个浩瀚的类库,利用MFC 编写程序本质上就是选择该类库中 合适的类,并调用其下相应成员函 数来完成某个功能。
C++ MFC
Win32数据类型UINT BYTE HANDLE HWND
WORDDWORD LONG WPARAM LPARAM LRESULT LPSTR LPCSTR
HDCHMENU HICON MSG WNDCLASS RECT POINT SIZE
C++ MFC
Win32API接口函数1、Windows消息函数 2、文件处理函数 3、网络函数 4、菜单函数 5、文本与字体函数 6、硬件与系统函数 7、控件和消息函数 8、位图、图标和光栅运算函数 9、绘图函数 10、打印函数 11、设备场景函数 12、进程和线程函数
C++ MFC
程序员如何去学习MFC
1、C++语言基础 2、Windows操作系统基础 3、面向对象程序观念的基础
抽象、封装、继承、多态
C++ MFC
站在OS角度上看程序1、执行程序的过程是OS完成任务的过程 2、程序执行一次是创建了一个进程,申请了 一个独立的内存空间。 3、程序和OS是通过事件驱动、消息机制通信 的 4、一个程序必有一个WinMain函数 5、一个程序必有一个窗口,进行输入输出 6、一个程序的启动过程,就是一个WinMain函 数的加载过程 7、一个程序至少由两部分组成: WinMain、WndProc
C++ MFC
面向对象观点看待Windows编程1、具有应用程序对象,功能包括: 注册窗口(填充窗口结构,注册窗口), 初始化程序实例(创建、显示、刷新)。 2、具有窗口对象,功能相当于WndPro 函数 3、保留WinMain函数,实现消息循环。 4、最好实现数据与显示分离。
C++ MFC
用面向对象观点重组API1、API是WIN32编程的重要基础2、关于应用程序对象 3、关于框架窗口对象 4、关于视图对象 5、关于文档对象 (数据与显示分离) 6、关于其它对象的API *重点是类和对象的概念关系*
C++ MFC
7.2 MFC层次结构
C++ MFC
MFC中类的层次结构MFC是一个包含了超过200个不同类的很 庞大的类库。利用他们,开发者可以 完成许多标准的Windows编程任务, 并且可以在应用程序中加入许
多复杂 的特性。在设计思想上,MFC将面向 对象的方法与事件驱动结合得很好, 因此要理解庞大的MFC类库中的常用 类的功能,要利用面向对象的思想进 行理解和分析。
C++ MFC
MFC的优点 1、MFC对于类、类的继承、封装、 多态性、类间关系和相互作用等 应用程序特性都有具体体现,可 以使开发者高效、轻松地建立 Windows应用程序,而不受设备 限制并且由事件进行驱动。
C++ MFC
2、MFC具有良好的通用性和可 移植性,它定义了应用程序的 轮廓,并提供了用户接口的标 准实现方法,程序员所要做的 工作就是通过VC所提供的各种 工具来完成这个工作。
C++ MFC
1、根类CObjectCObject类是MFC的抽象基类(不能派 生对象),是MFC中多数类和用户自 定义类的根类,它为程序员提供了 许多公共操作和基本服务。 主要包括:对象的动态建立与删除、 序列化(即串行化)的支持、对象 诊断输出、运行时信息管理以及集 合类的兼容等。 作用是,使得MFC以及基于MFC的应用 程序更加稳固和易于调试。
C++ MFC
根类CObject的组成
C++ MFC
2、消息映射类CCmdTarget该类是CObject的子类,是MFC类库中所 有具有消息映射属性的基类,消息映射规 定了当对象接到命令消息时,应调用哪一 个函数对该消息进行处理。 由CCmdTarget派生出的主框架类包括 CView、CWinApp、CDocument、CWnd和 CframeWnd都可处理命令消息。 程序员若需要一个新类来处理消息时, 可以从CCmdTarget派生出一个新类。一般 程序员很少从CCmdTarget类中直接派生出 新类,而是从其子类CView、CWinApp来派 生
C++ MFC
消息映射类CCmdTarget组成
C++ MFC
3、窗口应用程序类CWinApp每一个使用MFC的应用程序只能包 含一个从CWinApp派生的应用程序 对象,当VC的其它全局对象被构造 时,这个对象也同时被构造,当 Windows调用WinMain()函数时,产 生的对象已经有效了。从CWinApp 实例化的应用程序对象是一个全局 变量,在程序运行中该对象可以与 其它对象相互协调。
C++ MFC
4、应用程序类CWinApp组成(1)访问CWinApp对象以及全局函数。 AfxGetApp:获得一指向CWinApp对象 的指针 AfxGetResourceHabdle: 获得一应用程 序资源的句柄。 AfxGetAppName:获得指向一个包含应 用程序名的字符串的指针。 (2)CWinApp的公共数据成员 m_pszAppName:指定应用程序的名称。 m_nCmdShow:指定窗口的显示方式。 m_pMainWnd:包含一个指针,它指向 一个应用程序的主窗口。
C++ MFC
(3)CWinApp的公共成员函数 LoadCursor:调取光标资源。 LoadStandardCursor:调取Windows 预定义光标,在windows.h中指定IDC常 量。 LoadIcon:调取一个图标资源。 LoadStandardIcon:调取Windows预 定义的图标,在windows.h中 指定IDI常量。 OpenDocumentFile:框架调用此函数 打开一个指定的
文档。
上一篇:Web课程表 使用说明
下一篇:107项生化试剂临床意义汇总