visual,c+课件第4章

上传人:tia****nde 文档编号:70519799 上传时间:2019-01-17 格式:PPT 页数:36 大小:286.31KB
返回 下载 相关 举报
visual,c+课件第4章_第1页
第1页 / 共36页
visual,c+课件第4章_第2页
第2页 / 共36页
visual,c+课件第4章_第3页
第3页 / 共36页
visual,c+课件第4章_第4页
第4页 / 共36页
visual,c+课件第4章_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《visual,c+课件第4章》由会员分享,可在线阅读,更多相关《visual,c+课件第4章(36页珍藏版)》请在金锄头文库上搜索。

1、第4章 Microsoft类库基础,4.1 Microsoft类库概述,MFC(Microsoft Foundation Class )类库是Visual C+程序设计的核心,它封装了许多常用的Windows API函数,绝大部分的Visual C+应用程序都是在此基础上构成的。,MFC具有以下特点:,完全支持所有的Windows函数、控制、消息、GDI基本图形函数、菜单以及对话框。 使用与传统的Windows API同样的命名规则,因此,一个类所能完成的工作可直接从名字得知。 不使用容易产生错误的switchcase语句。所用的消息都映射到类中成员函数,这种直接的消息到方法的映射对所有消息都

2、适用。 通过发送有关对象信息到文件的能力,来提供更好的判断支持。也可以确认成员变量。 提供很多意外处理,减少错误。 在运行时确定数据对象的设计,这允许实例化类时动态操作各域。 代码少,速度快。,三大基类:,大多数MFC类是从三个基类(Base Class )派生的:CObject、CCmdTarget和CWnd。,4.2 根类:CObject,CObject提供以下的基本服务 : 支持序列化(serialization support) 运行时(Run-time)类的信息 对象诊断输出(object diagnostic output) 与容器类兼容(compatibility with co

3、llection classes),4.3 MFC应用程序框架结构类,用于构造框架应用程序的结构; 提供多数应用程序公用的功能 ; 组成框架的类对象组合成一个Windows应用程序工作框架。主要的组成对象有: 一个从类CWinApp派生出的应用程序对象; 一个或多个从类CDocument派生出的文档对象 一个或多个从类CView派生出的视对象,4.3.1 CWinApp类,CWinApp类层次关系图:,4.3.2 CDocument类,CDocument类层次关系 :,4.3.3 CView类,CView类的层次关系:,4.3.3 CView类 (续),视图类负责显示、描述、操作、编辑文档类的

4、内容。CView中有个指针型的成员变量指向所依附的文档CDocument,可以通过GetDocument获得该指针,便于对文档编辑。,4.4 MFC窗口类,类CWnd及其派生类封装一个Windows窗口句柄HWND。 CWnd:所有窗口的基类。可使用下面的派生类,或者直接从CWnd派生自己的类。 CFrameWnd:SDI应用程序主框架窗口的基类,也是其它框架窗口的基类。 CMDIFrameWnd:MDI应用程序主框架窗口的基类。 CMDIChildWnd:MDI应用程序文档框架窗口的基类。 CMinFrameWnd:浮动工具条最常见的最小框架窗口。 COleIPFrameWnd:当服务器文档

5、在编辑时为视提供一个框架窗口。,4.5 MFC异常类,MFC类库提供了一个基于CException类的异常处理机制 ,CException类有很多派生类,分别使用于各种场合。,4.5.1 CMemoryException:(Out-of-memory exception内存不足异常),内存溢出时就会引发CMemoryException。尤其是当new操作符分配内存失败时,这个异常就会产生。因为MFC用new操作符分配内存,所以任何MFC内存分配函数都会产生这个异常。,4.5.2 CNotSupportedException:(Request for an unsupported operati

6、on),MFC执行几个不被支持的函数,当用户企图调用这些函数时,就会产生CNotSupportedException异常。所以在自己的不被支持的函数中应用该类也是很方便的。用户也可以通过调用AfxThrowUnsupportException()发出未支持异常。,4.5.3 CArchiveException:(Archive-specific exception),当序列化操作出错时,就会发出CArchiveException异常。CArchiveException异常类的成员函数m_cause保存了指明异常发出的原因值。,4.5.4 CFileException:(File-specifi

7、c exception),在CFile类和CStdioFile以及其他文件类中,进行文件打开、关闭、读、写、指针移动等操作过程中,如果发送错误,一般会出现一个CFileException异常。,4.5.5 CResourceException:(Windows resource not found or not creatable),当Windows系统不能找到或不能定位所要求的资源时,就会发出CResourceException异常。在创建调入资源对象时,如对话框模板或位图资源,或试图分配GDI资源时,最有可能发出异常。,4.6 MFC文件类,MFC文件类都是从CFile类中派生出来,CFi

8、le类提供了二进制磁盘文件和无缓冲的文件接口。在任何MFC文件类中,都可以使用CFile类的成员函数。,4.6.1 打开和关闭文件,调用CFile:Open()打开文件 调用CFile:Close()关闭文件,4.6.2 文件的读写,可以用CFile:Read()或CFile:Write()读、写指定的字节数。 为了调整当前位置,可以用SeekToBegin()或SeekToEnd()或更一般的CFile:Seek()函数,4.6.3 CStdioFile类,CStdioFile类提供了支持二进制和文本的流式带缓冲的文件。 对于CStdioFile,也可以用CStdioFile:ReadLin

9、e(),或CStdioFile:WriteLine()成员函数一次读写一行。,4.6.4 CMemFile类,CMemFile类提供了基于内存而不是磁盘的文件类。它用于创建内存文件。当创建时,文件被打开,所以不需要调用Open()。,4.6.5 CArchive类,CArchive类用来存储二进制数据流,广泛地被应用于对象的序列化,通常由MFC框架创建。 当创建一个CArchive对象时,必须传递一个指向CFile对象的指针以及为档案(archive)指定一种模式,模式是CArchive:load或是CArchive:store。每一个CArchive必须与一个CFile相联系,所以必须首先创

10、建CFile。,4.6.6 CSocketFile类,CSocketFile类提供了基于Windows套接字类CSocket的文件类。MFC的CSocket类是由CAsyncSocket派生而来,为WinSock API提供了一个更高级别的接口,使用CSocketFile和CArchive类来简化关于套接字数据的输入和输出。,4.7 绘图和打印类,MFC提供了与Windows的绘制工具相等价的绘图工具类。绘图工具类封装了Windows的绘图工具,MFC利用这些工具可以在设备环境中进行绘图。,4.7.1 设备环境类,CDC类派生 四个类: 客户设备环境类CClientDC :用来方便地创建和破坏

11、一个设备环境, 窗口设备环境类CWindowDC:用来维护窗口的非客户区,如CClientDC维护客户区一样。 绘图设备环境类CPaintDC:在被构造以获得设备环境时调用CWnd:BeginPaint()。在这种情况下,设备环境只允许在已被无效化的窗口客户区绘图,而不能在整个客户区绘图。析构时, CPaintDC类调用CWnd:EndPaint ()函数。 元文件设备环境类CMetaFileDC: 用来创建一个Microsoft元文件。,4.7.2 图形对象类,4.8 ODBC类,MFC类库中ODBC数据库类主要有三个,即CDatabase类、CRecordset类和CRecordView类

12、,分别完成不同的功能。,4.8.1 CDatabase 类,CDatabase类封装的是数据库。主要的类成员函数有: Open和OpenEx:将CDatabase对象与一个ODBC数据源相连; Close:将CDatabase对象与ODBC数据源的连接关断; GetDatabaseName:返回CDatabase对象与数据源相连的ODBC连接字符串; ExecuteSQL:执行不返回记录集的任意SQL语句。,4.8.2 CRecordset类,CRecordset类封装了一个对某数据库查询和操作的记录集。CRecordset类是MFC ODBC数据库中操作最多的类,它包含对记录集进行打开和关闭

13、、对记录集进行增删和修改、改变当前记录位置以及获取当前数据库信息等许多操作。,4.8.2 CRecordset类(续),要使用应用程序自己的CRecordset派生类,需先打开一个数据库,并构造一个记录集对象,并向构造函数指出此CDatabase的对象指针。对记录集进行和获取信息的操作函数主要有:,4.8.2 CRecordset类(续),Open:根据指定的条件和顺序打开记录集 Close:关闭查询记录集,撤销查询; IsBOF:测试游标是否滚动到记录集第一条记录之前; IsEOF:测试游标是否滚动到记录集最后一条记录之后; IsDeleted:测试当前记录是否被删除; GetRecordC

14、ount:返回该记录集中行数(即记录数),4.8.2 CRecordset类(续),对记录进行修改和增删的函数主要有: AddNew:创建一个空行以及存储缓冲区,将其中各列设置为所希望的值以后,调用Update函数可完成添加记录的操作; Delete:删除当前行; Edit:把当前记录调入缓冲区供修改,修改后调用Update函数可更新此行记录值; Update:将缓冲区中的值存储到数据库记录中,4.8.2 CRecordset类(续),改变当前记录位置的函数主要有: MoveFirst:光标移动到第一个记录; MoveLast:光标移动到最后一个记录; MovePrev:光标向前移动一个记录; MoveNext:光标向后移动一个记录。 Move:光标向前或向后移动到距当前位置指定距离的位置。,4.8.3 CRecordView类,CRecordView类记载用户在记录集中的位置,以便记录可以更新用户界面。记录视类CRecordView是CFormView的派生类,提供显示及编辑记录集合中当前记录的用户界面元素。,4.9 小结,本章分类列出了MFC常用类库及其说明,包括:根类CObject、应用程序框架类、窗口类、异常类、文件类、绘图和打印类以及ODBC类等。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号