




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Microsoft类库基础
4.1Microsoft类库概述
MFC(MicrosoftFoundationClass)类库是VisualC++程序设计的核心,它封装了许多常用的WindowsAPI函数,绝大部分的VisualC++应用程序都是在此基础上构成的。MFC具有以下特点:完全支持所有的Windows函数、控制、消息、GDI基本图形函数、菜单以及对话框。使用与传统的WindowsAPI同样的命名规则,因此,一个类所能完成的工作可直接从名字得知。不使用容易产生错误的switch/case语句。所用的消息都映射到类中成员函数,这种直接的消息到方法的映射对所有消息都适用。通过发送有关对象信息到文件的能力,来提供更好的判断支持。也可以确认成员变量。提供很多意外处理,减少错误。在运行时确定数据对象的设计,这允许实例化类时动态操作各域。代码少,速度快。三大基类:
大多数MFC类是从三个基类(BaseClass)派生的:CObject、CCmdTarget和CWnd。4.2根类:CObject
CObject提供以下的基本服务:支持序列化(serializationsupport)运行时(Run-time)类的信息对象诊断输出(objectdiagnosticoutput)与容器类兼容(compatibilitywithcollectionclasses)4.3MFC应用程序框架结构类用于构造框架应用程序的结构;提供多数应用程序公用的功能;组成框架的类对象组合成一个Windows应用程序工作框架。主要的组成对象有:一个从类CWinApp派生出的应用程序对象;一个或多个从类CDocument派生出的文档对象一个或多个从类CView派生出的视对象4.3.1CWinApp类
CWinApp类层次关系图:4.3.2CDocument类
CDocument类层次关系:4.3.3CView类
CView类的层次关系:4.3.3CView类(续)
视图类负责显示、描述、操作、编辑文档类的内容。CView中有个指针型的成员变量指向所依附的文档CDocument,可以通过GetDocument获得该指针,便于对文档编辑。4.4MFC窗口类
类CWnd及其派生类封装一个Windows窗口句柄HWND。CWnd:所有窗口的基类。可使用下面的派生类,或者直接从CWnd派生自己的类。CFrameWnd:SDI应用程序主框架窗口的基类,也是其它框架窗口的基类。CMDIFrameWnd:MDI应用程序主框架窗口的基类。CMDIChildWnd:MDI应用程序文档框架窗口的基类。CMinFrameWnd:浮动工具条最常见的最小框架窗口。COleIPFrameWnd:当服务器文档在编辑时为视提供一个框架窗口。4.5MFC异常类
MFC类库提供了一个基于CException类的异常处理机制,CException类有很多派生类,分别使用于各种场合。4.5.1CMemoryException:(Out-of-memoryexception内存不足异常)
内存溢出时就会引发CMemoryException。尤其是当new操作符分配内存失败时,这个异常就会产生。因为MFC用new操作符分配内存,所以任何MFC内存分配函数都会产生这个异常。4.5.2CNotSupportedException:(Requestforanunsupportedoperation)
MFC执行几个不被支持的函数,当用户企图调用这些函数时,就会产生CNotSupportedException异常。所以在自己的不被支持的函数中应用该类也是很方便的。用户也可以通过调用AfxThrowUnsupportException()发出未支持异常。4.5.3CArchiveException:(Archive-specificexception)
当序列化操作出错时,就会发出CArchiveException异常。CArchiveException异常类的成员函数m_cause保存了指明异常发出的原因值。4.5.4CFileException:(File-specificexception)
在CFile类和CStdioFile以及其他文件类中,进行文件打开、关闭、读、写、指针移动等操作过程中,如果发送错误,一般会出现一个CFileException异常。4.5.5CResourceException:(Windowsresourcenotfoundornotcreatable)
当Windows系统不能找到或不能定位所要求的资源时,就会发出CResourceException异常。在创建调入资源对象时,如对话框模板或位图资源,或试图分配GDI资源时,最有可能发出异常。4.6MFC文件类MFC文件类都是从CFile类中派生出来,CFile类提供了二进制磁盘文件和无缓冲的文件接口。在任何MFC文件类中,都可以使用CFile类的成员函数。4.6.1打开和关闭文件
调用CFile::Open()打开文件调用CFile::Close()关闭文件4.6.2文件的读写
可以用CFile::Read()或CFile::Write()读、写指定的字节数。为了调整当前位置,可以用SeekToBegin()或SeekToEnd()或更一般的CFile::Seek()函数4.6.3CStdioFile类
CStdioFile类提供了支持二进制和文本的流式带缓冲的文件。对于CStdioFile,也可以用CStdioFile::ReadLine(),或CStdioFile::WriteLine()成员函数一次读写一行。4.6.4CMemFile类
CMemFile类提供了基于内存而不是磁盘的文件类。它用于创建内存文件。当创建时,文件被打开,所以不需要调用Open()。4.6.5CArchive类
CArchive类用来存储二进制数据流,广泛地被应用于对象的序列化,通常由MFC框架创建。当创建一个CArchive对象时,必须传递一个指向CFile对象的指针以及为档案(archive)指定一种模式,模式是CArchive::load或是CArchive::store。每一个CArchive必须与一个CFile相联系,所以必须首先创建CFile。4.6.6CSocketFile类
CSocketFile类提供了基于Windows套接字类CSocket的文件类。MFC的CSocket类是由CAsyncSocket派生而来,为WinSockAPI提供了一个更高级别的接口,使用CSocketFile和CArchive类来简化关于套接字数据的输入和输出。4.7绘图和打印类
MFC提供了与Windows的绘制工具相等价的绘图工具类。绘图工具类封装了Windows的绘图工具,MFC利用这些工具可以在设备环境中进行绘图。4.7.1设备环境类
CDC类派生四个类:客户设备环境类CClientDC:用来方便地创建和破坏一个设备环境,窗口设备环境类CWindowDC:用来维护窗口的非客户区,如CClientDC维护客户区一样。绘图设备环境类CPaintDC:在被构造以获得设备环境时调用CWnd::BeginPaint()。在这种情况下,设备环境只允许在已被无效化的窗口客户区绘图,而不能在整个客户区绘图。析构时,CPaintDC类调用CWnd::EndPaint()函数。元文件设备环境类CMetaFileDC:用来创建一个Microsoft元文件。4.7.2图形对象类
4.8ODBC类
MFC类库中ODBC数据库类主要有三个,即CDatabase类、CRecordset类和CRecordView类,分别完成不同的功能。4.8.1CDatabase类
CDatabase类封装的是数据库。主要的类成员函数有:Open和OpenEx:将CDatabase对象与一个ODBC数据源相连;Close:将CDatabase对象与ODBC数据源的连接关断;GetDatabaseName:返回CDatabase对象与数据源相连的ODBC连接字符串;ExecuteSQL:执行不返回记录集的任意SQL语句。4.8.2CRecordset类
CRecordset类封装了一个对某数据库查询和操作的记录集。CRecordset类是MFCODBC数据库中操作最多的类,它包含对记录集进行打开和关闭、对记录集进行增删和修改、改变当前记录位置以及获取当前数据库信息等许多操作。4.8.2CRecordset类(续)
要使用应用程序自己的CRecordset派生类,需先打开一个数据库,并构造一个记录集对象,并向构造函数指出此CDatabase的对象指针。对记录集进行和获取信息的操作函数主要有:4.8.2CRecordset类(续)Open:根据指定的条件和顺序打开记录集Close:关闭查询记录集,撤销查询;IsBOF:测试游标是否滚动到记录集第一条记录之前;IsEOF:测试游标是否滚动到记录集最后一条记录之后;IsDeleted:测试当前记录是否被删除;GetRecordCount:返回该记录集中行数(即记录数)4.8.2CRecordset类(续)对记录进行修改和增删的函数主要有:AddNew:创建一个空行以及存储缓冲区,将其中各列设置为所希望的值以后,调用Update函数可完成添加记录的操作;Delete:删除当前行;Edit:把当前记录调入缓冲区供修改,修改后调用Update函数可更新此行记录值;Update:将缓冲区中的值存储到数据库记录中4.8.2CRecordset类(续)改变当前记录位置的函数主要有:MoveFirst:光标移动到第一个记录;MoveLast:光标移动到最后一个记录;MovePrev:光标向前移动一个记录;MoveNext:光标向后移
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 酒店设施改造与管理输出合同
- 网络安全评估及防护服务合同
- 挂靠房地产公司协议书
- 简易离婚协议书
- 技师劳动合同
- 爱眼日学校活动方案(3篇)
- 美容院会员卡转让合同
- 网络直播活动策划方案
- 网络安全产品供应及服务合同
- 旅游行程中意外情况处理及责任免除协议
- 化工流程模拟实训AspenPlus教程第6章换热器单元模拟
- (高清版)JGJ123-2012既有建筑地基基础加固技术规范
- 生物质发电厂燃料收、储、运方案
- 中小学教师校本培训管理手册
- 吹灰器检修三措两案
- 游戏机卡伦刷卡系统说明书
- 轴承专用中英文对照表 (完整版)
- 了解现代汉字字义的特点根据形旁的表义ppt课件
- iso14001-2015内审检查表(完整记录)
- 人教版小学数学四年级下册教材分析ppt课件
- 嵩晟富氢水销售方案ppt课件
评论
0/150
提交评论