用MFC开发Windows应用程序1

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

用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。

CObject类CCmdTarget命令相关类(详见图2-1)CDC设备环境类CClientDC、CWindowDC、CPaintDC、…CGiObject绘画工具类、CBush、CFont、CBitmap、CPalette、…CMenu菜单类CArray、CList、CMap、…群(集合)类CDatabase、CRecordset、…ODBC数据库支持CFile文件类CException异常类CSyncObject同步对象类CInternetSession因特网连接类图2-1CObject主要派生类的派生层次2. 应用程序体系结构类应用程序体系结构类用于构造一个应用程序的框架,它能提供多数应用程序公用的功能。

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

图2-2 MFC 应用程序体系结构主要类可视对象类,它主要包括:• CWnd 窗口类,该类提供了MFC 中所有窗口的基本功能,它是CCmdTarget 类的基类。

• CView 视类,该类表示框架窗口的用户区和显示文档数据并接受输入的用户区。

• CMenu 菜单类,该类是CObject 类的子类,用于管理菜单。

• CDialog 对话框类,该类从CWnd 类中派生出来,对话框子层次结构包括通用对话框类CDialog以及支持文件选择、颜色选择、字体选择、打印、替换文本的公共对话框类。

• 控件类,控件子层次结构包括若干子类控件类CButton 、CEdit 、CListBox 、CScrollBar 、CStatic 、CComboBox ,使用这些类可以建立静态文本、命令按钮、位图按钮、列表框等。

• CControlBar 控件条类,控件条子结构为工具条、状态条、对话条和分割窗口建立模型。

• CGdiObject 绘画对象类,图形绘画对象子层次结构以CGdiObject 类为根类,或以用于建立绘画对象模型,如画笔、画刷、字体、位图、调色板等。

CMultiDocTemplate 多文档模板类CCmdTarget 命令处理类CWinThread 线程类CDocument 文档类CDocTemplate 文档模板类 CWnd 窗口类CFrameWnd 框架窗口CSplitterWnd 窗口分割类CControlBar 控制条类CDialogBar 、CToolBar 、CStausBarCDialog 对话框类CPropertSheet 属性页类CObject 类CWinApp Windows 应用程序类CSingleDocTemplate 单文档模板类CV iew 视图类CCtrlV iewCEditV iew 、CListV iew 、CTreeV iew 、CRicV iewCCtrlV iewCRecordV iew控件类CButton 、CEdit 、CListBox 、CScrollBar 、CStatic 、CComboBox• CDC设备描述表类,该类及其子类支持设备描述表对象,是CObject类的子类。

3.通用类。

此分类中的类提供了很多通用服务,例如文件I/O、诊断和异常处理等。

包括CFile 类和CArchive类、CException异常类、模板收集类等。

4.OLE类,对象连接与嵌入(OLE)子层次结构为支持OLE提供了9个类,分为3种:普通类、客户类和服务器类。

5.ODBC数据库类,开放数据库连接子层次结构提供了一些类来支持ODBC的特征,即通过这些类可开发数据库应用程序来访问多个数据库文件,该层次结构中主要包含CDataBase类、CRecordSet类、CRecordV iew类等。

6.绘图和打印类,包含输出类、绘图工具类。

7.集合相关类包含数组类CArray、列表类CList和映像类CMap三大类。

8.Internet和网络工作类,包含ISAPI类、WindowsSocket类、Win32Internet类。

9.非CObject类派生的类,如字符串类CString、时间类CTime、CRect类、CPoint类等,这些类可以应用于非Windows应用程序。

2.2应用程序的类及文件说明我们再用Visual C++ 6.0的向导生成应用程序时,系统共派生出五个类,在项目的Workapace 窗口中选择ClassView选项卡,可以看到系统生成的五个类。

以建立一名为test文件窗口为例,图2-3显示的是系统在生成它时派生出的五个类。

图2-3 在Workspace窗口中显示项目test的五个类1.关于对话框的对话框类CAboutDlgCAboutDlg是项目test的对话框类,这是由MFC类中的CDialog类派生而来的。

关于对话框的内容,我们将在下一节时详细介绍。

2.主框架窗口类CMainFrameCMainFrame是项目test的主框架窗口类。

它的基类是FrameWnd。

头文件是MainFrame.h,实现文件是MainFrame.cpp。

主框架窗口类用于管理主程序的窗口,用来显示标题栏、工具栏、状态栏等,同时还处理对窗口操作的消息,例如窗口最大化、最小化等一般通用操作。

视图窗口是主框架窗口的子集,对于MDI应用程序,主框架窗口是所有MDI子窗口的容器。

3.应用程序类CTestAppCTestApp是项目test的应用程序类。

它的基类是CWidApp。

头文件是test.h,实现文件为test.cpp。

应用程序类控制应用程序的所有对象,包括文档、视图和边框窗口,并且完成应用程序的初始化工作和程序退出时的清除工作。

注意,每个基于MFC的应用程序必须有一个从CWinApp类派生的对象。

4.文档类CTestDocCTestDoc 是项目test 的文档类。

它的基类是CDocument 。

头文件是testDoc.h ,实现文件是testDoc.cpp 。

文档类用于存放应用程序的数据,以及文件的保存和装载功能。

文档类必须通过视图类实现与用户的交互。

5.视图类CTestV iewCTestView 是项目test 的视图类。

它的基类是CV iew 。

头文件是testV iew.h ,实现文件是testView.cpp 。

视图类主要负责管理视图窗口,对应的对象存在于框架窗口的客户区域中,负责显示用户数据,接受用户对数据的鼠标、键盘操作,并传送给文档类对象。

项目test 的文件可通过Workspace 窗口中选择ClassV iew 选项卡来显示(图2-4)通过图我们可以看到,系统在自动生成项目时,除了上面各个类的头文件和实现文件外,还生成了一些为建立应用程序所需要的其它文件。

下面分别加以说明:图2-4系统生成的文件另外,如果你在生成应用程序时选择的是其它选项的话,还会生成其它文件。

如会自动生成.hpj 文件和一些.rtf 文件,它们用以给出上下文的帮助。

在工作的根目录中,还会自动生成一个ReadMe.txt 文件,它解释了所生成的其它所有文件并说明了所有创建的类。

2.3利用AppWizard 生成Windows 应用程序我们将使用MFC 中的AppWizard来生成一个最简单的应用程序,它只是简单显示一个基本的•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 文件中保存着项目的各种信息,一个项目文件对应一个项目应用程序。

Windows窗口。

步骤一:启动V isual C++,选择File菜单中的New菜单项,在弹出的New对话框中选择Project 选项卡。

在项目列表中选择项目类型:MFC AppWizare(exe),它表示生成使用MFC并且最终形成EXE可执行文件的项目。

在Location文本框中填写“E:\”作为保存文件的路径,在Project name 文本框中输入项目名称“test”,单击OK按钮继续。

如图2-5所示。

图2-5 创建test 的Windows窗口步骤二:从MFC AppWizard弹出的MFC AppWizard-Step 1对话框中选择“Single document”单文档,其余用系统默认值,然后单击Finish按钮。

见图2-6图2-6 MFC AppWizard-Step 1步骤三:此时系统弹出“New Project Information”对话框,对所创建项目进行总结,所选项配置不合适,可按“Cancel”按钮退回前述步骤重新配置,我们在这单击OK。

步骤四:现在,AppWizard已经自动为我们生成了一个最简单的应用程序框架。