用MFC开发Windows应用程序1

  • 格式:doc
  • 大小:330.50 KB
  • 文档页数:25

1 用MFC开发Windows应用程序 1.实验目的 1. 了解AppWizard自动生成的程序框架 2. 了解MFC类库设计面向对象应用程序的过程 3. 学习基本图形设计 4. 学习使用基本控件和通用对话框 5. 学习菜单设计 6. 学习画笔、画刷和字体的应用

2.基础知识 2.1 MFC类层次中所包含的类 MFC类库中包含了许多不同的类,它们可以划分为根类、应用程序结构类、应用程序结构类、窗口类、OLE类、数据库类等10个大类,在其中一些大类的基础上又派生出许多了类。 MFC类层次主要包含以下各类: 1. 根类 MFC中的CObject类,是MFC抽象基类,是MFC中多数类和自定义子类的根类,它为程序员提供了许多编程所需的公共操作。这些操作包括:对象的建立和删除、串行化支持、对象诊断。输出、运行时信息以及集合类的兼容等。 CObject类的主要派生类的派生层次如图2-1。

图2-1 CObject主要派生类的派生层次 2. 应用程序体系结构类 应用程序体系结构类用于构造一个应用程序的框架,它能提供多数应用程序公用的功能。

CPen、CBush、CFont、CBitmap、CPalette、„ CObject类 CCmdTarget命令相关类(详见图2-1) CDC设备环境类 CClientDC、CWindowDC、CPaintDC、„ CGiObject绘画工具类

CMenu菜单类 CArray、CList、CMap、„群(集合)类 CDatabase、CRecordset、„ODBC数据库支持 CFile文件类 CException异常类 CSyncObject同步对象类 CInternetSession因特网连接类 2

应用程序体系结构类是由CCmdTarget为基类派生出来的,主要包含了与命令相关的类、窗口应用程序类、文档/视类和线程基类等,如图2-2。

图2-2 MFC应用程序体系结构主要类 3. 可视对象类,它主要包括: • CWnd窗口类,该类提供了MFC中所有窗口的基本功能,它是CCmdTarget类的基类。 • CView视类,该类表示框架窗口的用户区和显示文档数据并接受输入的用户区。 • CMenu菜单类,该类是CObject类的子类,用于管理菜单。 • CDialog对话框类,该类从CWnd类中派生出来,对话框子层次结构包括通用对话框类CDialog以及支持文件选择、颜色选择、字体选择、打印、替换文本的公共对话框类。 • 控件类,控件子层次结构包括若干子类控件类CButton、CEdit、CListBox、CScrollBar、CStatic、CComboBox,使用这些类可以建立静态文本、命令按钮、位图按钮、列表框等。 • CControlBar控件条类,控件条子结构为工具条、状态条、对话条和分割窗口建立模型。 • CGdiObject绘画对象类,图形绘画对象子层次结构以CGdiObject类为根类,或以用于建立绘画对象模型,如画笔、画刷、字体、位图、调色板等。 • CDC设备描述表类,该类及其子类支持设备描述表对象,是CObject类的子类。 4. 通用类。此分类中的类提供了很多通用服务,例如文件I/O、诊断和异常处理等。包括CFile类和CArchive类、CException异常类、模板收集类等。 5. OLE类,对象连接与嵌入(OLE)子层次结构为支持OLE提供了9个类,分为3种:普通类、客户类和服务器类。

CMultiDocTemplate多文档模板类 CCmdTarget命令处理类 CWinThread线程类

CDocument文档类 CDocTemplate文档模板类

CWnd窗口类 CFrameWnd框架窗口 CSplitterWnd窗口分割类 CControlBar控制条类 CDialogBar、CToolBar、CStausBar

CDialog对话框类 CPropertSheet属性页类

CObject类 CWinApp Windows应用程序类

CSingleDocTemplate单文档模板类

CView视图类 CCtrlView CEditView、CListView、CTreeView、CRicView CCtrlView CRecordView 控件类CButton、CEdit、CListBox、CScrollBar、CStatic、CComboBox 3

6. ODBC数据库类,开放数据库连接子层次结构提供了一些类来支持ODBC的特征,即通过这些类可开发数据库应用程序来访问多个数据库文件,该层次结构中主要包含CDataBase类、CRecordSet类、CRecordView类等。 7. 绘图和打印类,包含输出类、绘图工具类。 8. 集合相关类包含数组类CArray、列表类CList和映像类CMap三大类。 9. Internet和网络工作类,包含ISAPI类、WindowsSocket类、Win32Internet类。 10. 非CObject类派生的类,如字符串类CString、时间类CTime、CRect类、CPoint类等,这些类可以应用于非Windows应用程序。

2.2应用程序的类及文件说明 我们再用Visual C++ 6.0的向导生成应用程序时,系统共派生出五个类,在项目的Workapace窗口中选择ClassView选项卡,可以看到系统生成的五个类。以建立一名为test文件窗口为例,图 2-3显示的是系统在生成它时派生出的五个类。

图 2-3 在Workspace窗口中显示项目test的五个类 1.关于对话框的对话框类CAboutDlg CAboutDlg是项目test的对话框类,这是由MFC类中的CDialog类派生而来的。关于对话框的内容,我们将在下一节时详细介绍。 2.主框架窗口类CMainFrame CMainFrame是项目test的主框架窗口类。它的基类是FrameWnd。头文件是MainFrame.h,实现文件是MainFrame.cpp。主框架窗口类用于管理主程序的窗口,用来显示标题栏、工具栏、状态栏等,同时还处理对窗口操作的消息,例如窗口最大化、最小化等一般通用操作。视图窗口是主框架窗口的子集,对于MDI应用程序,主框架窗口是所有MDI子窗口的容器。 3.应用程序类CTestApp CTestApp是项目test的应用程序类。它的基类是CWidApp。头文件是test.h,实现文件为test.cpp。应用程序类控制应用程序的所有对象,包括文档、视图和边框窗口,并且完成应用程序的初始化工作和程序退出时的清除工作。注意,每个基于MFC的应用程序必须有一个从CWinApp类派生的对象。 4.文档类CTestDoc CTestDoc是项目test的文档类。它的基类是CDocument。头文件是testDoc.h,实现文件是testDoc.cpp。文档类用于存放应用程序的数据,以及文件的保存和装载功能。文档类必须通过视图类实现与用户的交互。 5.视图类CTestView CTestView是项目test的视图类。它的基类是CView。头文件是testView.h,实现文件是 4

testView.cpp。视图类主要负责管理视图窗口,对应的对象存在于框架窗口的客户区域中,负责显示用户数据,接受用户对数据的鼠标、键盘操作,并传送给文档类对象。 项目test的文件可通过Workspace窗口中选择ClassView选项卡来显示(图2-4)通过图我们可以看到,系统在自动生成项目时,除了上面各个类的头文件和实现文件外,还生成了一些为建立应用程序所需要的其它文件。下面分别加以说明:

图2-4系统生成的文件 另外,如果你在生成应用程序时选择的是其它选项的话,还会生成其它文件。如会自动生成.hpj文件和一些.rtf文件,它们用以给出上下文的帮助。在工作的根目录中,还会自动生成一个ReadMe.txt文件,它解释了所生成的其它所有文件并说明了所有创建的类。

2.3利用AppWizard生成Windows应用程序 我们将使用MFC中的AppWizard来生成一个最简单的应用程序,它只是简单显示一个基本的Windows窗口。

•Resource.h是标准的头文件,它包含了所有资源符号的定义。 •StdSfx.h和StdSfx.cpp用于建立预编译头文件(test.pch)和预编译类型文件(StdAfx.obj)。 •test.rc是包含资源描述信息的资源文件,其中保存了应用程序中使用到的各种资源的信息,包括存贮在“\res”子文件夹中的图标、位图、光标。 •test.ico是包含应用程序图标文件的图标文件。 •test.rc2文件中迎含了用Visual C++ 6.0不能直接编辑的资源。可以将所有不能由资源编辑器编辑的资源放置到这个文件中。•testDoc.ico文件中包含了打开文档时所用的图标文件 •Toolbar.bmp是用于创建工具栏按钮的位图文件。初始化工具栏和状态栏是在主边框窗口中构造的。 •test.dsw称为Wordspace文件。一个Wordspace文件可包含一个或多个项目。 •扩展名为.opt的文件存放与一个Wordspace文件对应的本地计算机配置信息。 •test.clw是ClassWizard的数据库文件,存放由ClassWizard使用的信息。ClassWizard使用这些信息来编辑已有的新类或添加新类。 •test.dsp是Project文件,即项目文件。Project文件中保存着项目的各种信息,一个项目文件对应一个项目应用程序。