C++MFC基础教程(初学者)-课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《C++MFC基础教程(初学者)-课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MFC 基础教程 初学者 课件
- 资源描述:
-
1、 ppt简介共14章、442页,涵盖了vc的基础介绍,以及mfc程序的创建,控件的使用、多线程、多媒体编程、网络编程、动态链接库的使用等等,是那些喜欢MFC但是不知道从何学起的MFC爱好者的最佳的基础教材!第1章 Visual C+集成开发环境Visual C+是一个功能强大的可视化应用程序开发工具。其凭借强大功能,受大了广大程序员的欢迎。当今流行的Visual C+的开发工具是6.0版本。下面来介绍Visual C+6.0的一些基本情况。1.1 Visual C+6.0概述Visual C+是一种C/C+语言的集成开发环境(IDE)。当最初还处于DOS时代的Borland公司推出了Turbo
2、 Pascal和Turbo C,让程序员感受到了把编译器和编辑器集成在一起使用时的方便。Microsoft公司也看到了这一点,于是,两个公司开始合作,推出了Quick C和Microsoft C/C+等多个DOS版本的C/C+集成开发环境。随着Windows的不断成熟,于是Microsoft开始开发Windows下的Visual C+。经过多次版本的修订与更新,现在大多数程序员使用的是Visual C+6.0版本。Visual C+是一个可视化的C+的集成开发环境。在使用Visual C+时,开发人员可以通过鼠标拖动方便地设计程序的界面,相应的代码系统会自动生成。MFC(Microsoft F
3、undermental Classes)是微软提供的Visual C+可以调用的类库,其中封装了开发人员常用的类。使用MFC可以大大提高编程人员的工作效率。1.2 Visual C+6.0界面介绍安装好Visual C+开发环境后,桌面上并没有其快捷图标,需读者自己修改。选择“开始”菜单,从所有程序中,找到Microsoft Visual Studio 6.0级联菜单下的Microsoft Visual C+菜单项。选择该菜单项,并将其拖动到桌面上,则在桌面上创建了Microsoft Visual Studio的快捷图标。双击快捷图标,即可启动Visual C+6.0集成开发环境。每次运行Vi
4、sual C+6.0时,会弹出一个【Tip of the day】对话框,如下图所示。1.2 Visual C+6.0界面介绍技巧:【Tip of the day】对话框中介绍了很多关于开发环境的使用方法以及编程方面的小技巧。如果想在下次启动Visual C+6.0时不再显示该提示对话框,可以选择下一次启动时不再显示它。1.2 Visual C+6.0界面介绍为了便于说明,首先创建一个IDE的MFC项目(具体创建步骤,后面会详细介绍),如下图所示。1.2 Visual C+6.0界面介绍从上图中可以看出,Visual C+的界面被分成了7部分。上面依次标题栏、菜单栏和工具栏。中间左侧部分是工作
5、区窗口,右侧部分是编辑区。最下方是输出窗口和状态栏。1.2.1 工作区窗口和输出窗口工作区窗口和输出窗口是在一个程序编译时使用最多的停靠式窗口。工作区窗口中显示了当前程序中的所有类、资源和文件信息。工作区窗口分为3个部分:Class View(类视图)、Resource View(资源视图)和File View(文件视图)。Class View:显示当前工作区中所有工程定义的C+类。双击某个类名,Visual C+会自动打开这个类的文件,并将编辑区定位到该类的定义处。双击类中的成员函数和变量,编辑区则定位到该成员函数或变量的定义处。1.2.1 工作区窗口和输出窗口Resource View:显
6、示当前工作区中所有的资源。这些资源包括快捷键、对话框、图标、菜单、字符条编辑器、工具栏和版本信息。双击其中的ID号,会显示相应的资源信息。File View:显示属于当前工程的所有文件,包括C/C+源文件、头文件、资源文件等。输出窗口与工作区一样,分为多个选择卡。其中最常用的选项卡被放在了最外面,分别为Build、Debug、Find in Files 1和Find in Files 2。1.2.1 工作区窗口和输出窗口Build:Build显示工程在创建中,经过的每一个步骤及相应信息。如果出现编译链接错误,那么出现错误的文件、原因、行号等内容会显示在Build中。双击该错误信息行,编辑区则定
7、位在该错误出现的行。Debug:工程通过编译后,运行调试版本时,Debug选项卡中会显示具体的调试信息。1.2.1 工作区窗口和输出窗口Find in Files 1和Find in Files 2:两个选项卡的作用相同,用于显示从多个文件中查找字符串的结果。当用户想要查看某个函数或变量出现在哪些文件中,单击【Edit】|【Find in Files】命令,弹出【Find in Files】对话框,如下图所示。在【Find in Files】对话框中的【Find what】后的编辑框中,输入想要查找的内容,单击【Find】按钮即可。查找到的内容会输出到Find in Files选项卡中。1.2
8、.2 菜单栏和工具栏菜单栏位于集成开发环境的顶部。菜单栏由9个菜单项组成:File(文件)、Edit(编辑)、View(视图)、Insert(插入)、Project(工程)、Build(编译)、Tools(工具)、Windows(窗口)、Help(帮助)。每一个菜单项都有一个下拉式菜单,其中的菜单项用于完成特定的功能。工具栏位于菜单栏的下面。工具栏可以称作是美化的菜单栏,其由许多按钮构成。其中的按钮用于完成特定的功能。工具栏可以任意拖动,也可以成为一个浮动窗口。1.2.3 编辑区在Visual C+中,编写应用程序代码的位置就是编辑区。该编辑区的功能十分强大,智能化程度也非常高。在编辑区内,除
9、了能编写C/C+语言外,还能编写SQL、HTML和VBScript等其他编程语言。如下图所示。1.2.4 联机帮助Visual C+6.0不像其他集成开发环境一样把帮助系统集成在开发环境内部,而是提供了一个专门为Visual C+设计的MSDN类库。MSDN虽然是一个独立的帮助系统,但却能很好地和Visual C+6.0集成在一起。MSDN的使用方式有以下几种:单击【Help】|【Contents】命令;单击【Help】|【Search】命令;单击【Help】|【Index】命令;按下【F2】键。通过上述几种命令方式,即可运行MSDN。1.2.4 Visual C+中的文件扩展名打开程序Hel
10、lo World所在的文件夹,看到该文件夹自动生成了许多扩展名不同的文件,如下图所示。1.2.6 Visual C+中的文件扩展名了解这些不同的扩展名文件,对于理解Visual C+6.0如何组织和管理项目文件是很有必要的。有关这些文件扩展名及其说明,如下表所示。第2章 MFC与应用程序框架在Visual C+集成开发环境下,使用微软基础类库MFC,可以开发出功能强大的Windows应用程序。另外,通过MFC AppWizard自动生成的MFC应用程序框架,还可以很方便地开发自己想要实现的功能。本章将先介绍有关MFC的基础知识,然后对MFC应用程序框架作具体介绍。2.1 微软基础类库MFCMF
11、C是一种重要的编程方法,它是微软公司的特定的应用程序包装接口。本节将讲解MFC概述及其类库结构。2.1.1 MFC概述MFC的英文全称是Microsoft Foundation Classes,即微软的基础类库。MFC的本质就是一个包含了许多微软公司已经定义好的对象的类库。虽然开发人员要编写的程序在功能上各有不同,但是从结构上讲,都可以化分为对用户界面的设计、对文件的操作、对数据库的访问及对多媒体的使用等一些最主要的方面。这一点正是微软提出MFC类库最重要的原因。在MFC类库中,大约有200个类。在进行程序设计时,只需简单地调用已有的类及类中的方法即可。另外,还可以利用“继承”方法从已有类中派
12、生出自己想要的类。这时,派生出来的类不但拥有父类中的方法和属性,还可以根据自己的需求,自定义一些特殊的属性和方法,使得派生类功能更加强大。MFC有较好的移植性,可应用于众多平台。2.1.2 MFC类库结构MFC中类可划分为基类、应用程序结构类、窗口类、OLE类、数据库类等10大类,而且在其中的一些大类的基础上又派生出许多子类。MFC的类库结构的层次图如下图所示。2.1.2 MFC类库结构从上图中可以看出,CObject是一个原始基类。绝大多数MFC类的最终基类都是CObject。原始基类下面,主要包括以下几种类:MFC应用程序结构类,窗口、对话框和控件类,输出(设备文本)和绘图类,简单数据类型
13、类,数组、列表和映射类,文件和数据库类,Internet和网络类,OLE类以及高度和异常类。MFC的应用程序结构类分为CWinApp和CWinThread。使用MFC创建的每一个应用程序都包含一个由类CWinApp派生而来的应用程序对象。该对象是一个全局对象。应用程序对象主要用于处理应用程序的初始化,同时也处理应用程序事件的消息循环。CCmdTarget和CCmdUI为MFC中常用的有关发送命令的类。CDocument为MFC中常用的应用程序文档的基类。CDocTemplate为文档模版类,通常是应用程序的单文档或多文档的基类。CView类是常用的视图类。2.2 MFC应用程序框架分析在前面介
14、绍过如何创建一个基于单文档的应用程序。对于如何选择性地创建基于多文档或是基于对话框的应用程序,将会在后续章节详细介绍。本节主要对MFC应用程序框进行简单的概括,使读者了解MFC应用程序框架的结构与工作机制。2.2.1 入口函数入口函数就是指一个程序的入口点。WinMain函数是Windows程序的入口函数。为了便于讲解,首先要创建一个MFC应用程序,程序名命名为sample0201。具体创建步骤不再详细介绍。从创建好的sample0201程序中,并不能找到WinMain函数。这是因为典型Windows程序的大部分初始化工作都是标准化的,因此把WinMain函数隐藏在应用程序的框架中。当一个程序
15、编译时,会自动将该函数链接到程序中。在计算机中找到Visual C+的安装目录,笔者安装在F盘,则按照下面这个路径依次打开文件夹,“F:Program FilesMicrosoft Visual StudioVC98MFCSRC”。打开后,会发现一个源文件“WinMain.cpp”。该文件中则定义了MFC应用程序的入口函数AfxWinMain。文件的源代码如下:2.2.1 入口函数2.2.1 入口函数当一个应用程序启动时,会自动调用应用程序框架内部的AfxWinMain函数。根据其前缀Afx就知道WinMain是一个全局的MFC函数。从上述代码中可以看出,WinMain函数会查找该应用程序的一
16、个全局构造对象。该对象是由CWinApp的派生类创建,因此有程序启动时,它就被创建好了。然后WinMain对该应用程序进行初始化,在此过程调用的是该程序全局构造对象的InitApplication()和InitInstance()函数。完成初始化后,WinMain调用Run()函数,运行应用程序的消息循环。最后结束应用程序时,WinMain调用AfxWinTerm()函数,做一些清理工作。2.2.2 InitInstance()函数InitInstance()函数的作用是初始化程序。每次启动一个应用程序时,Winmain函数会自动调用InitInstance()函数。打开创建的程序sample
17、0201,在该程序的CSample0201App类中,可以看到该程序对InitInstance()函数进行了重载。该重载代码如下:2.2.2 InitInstance()函数从上述代码中可以看出,在ShowWindow和UpdateWindos之前,程序要做两个动作,一个是注册窗口类,另一个是构建窗口类。InitInstance()函数规定了生成的应用程序是基于单文档的、基于多文档的或是基于对话框的。因此在CWinApp中必须重载InitInstance()函数。2.2.3 应用类Run()函数与查找WinMain函数类似,在Visual C+的安装目录下,按照下面这个路径依次打开文件夹,“F
18、:Program FilesMicrosoft Visual StudioVC98MFCSRC”。打开后,会发现一个源文件“THRDCORE.CPP”。该文件中定义了应用类Run()函数,源代码如下:2.2.3 应用类Run()函数从上述代码中可以看出,如果消息队列没有消息,则调用OnIdle()函数,并递增iIdleCount计数标志,该计数标志表示在两次消息处理过程只共调用了多少次OnIdle()函数。bIdle是消息队列空闲的标志,当消息队列有消息时,则调用PumpMessage()函数,进行消息翻译和消息派发。其中PreTranslateMessage(&m_msgCur)对消息进行翻
19、译,DispatchMessage(&m_msgCur)把消息m_madCur发送到应用程序主框架窗口。注意:在应用程序sample0201的CSample0201App的Run函数继承了CWinApp的虚函数Run()。而CWinApp的Run()函数调用了CWinThread的Run()函数。2.2.4 消息映射表当MFC应用程序类中的Run()函数把消息交给主窗口的窗口函数后,窗口函数将如何处理这些消息。在Win32程序中,处理窗口消息的窗口函数WinProc()函数通过switchcase结构对消息进行判断并分别进行处理。但在MFC应用程序的主窗口类对消息的处理并没有沿袭Win32程序
20、的做法。MFC应用程序中进行消息处理,是为每一个要处理的消息添加一个消息处理函数。这种定义消息和消息处理函数的对照表,称为消息映射表。MFC的消息映射表采用映射宏的方式,将消息和消息处理函数一一对应起来。以应用程序的主框架为例,在类的声明文件MainFrame.h中添加声明消息映射的宏。2.2.4 消息映射表在类的实现文件MainFrame.cpp中,添加消息映射宏的定义语句。其中,ID_MY_MESSAGE为自定义的菜单项命令ID号,OnMymessage()为响应菜单命令的成员函数。2.2.5 MFC消息分类MFC应用程序对消息的描述一般分为3类:窗口消息、命令消息和控件消息。1窗口消息窗
21、口消息一般与创建窗口、绘制窗口、移动窗口和销毁窗口等操作有关。另外,当使用鼠标、键盘等与操作窗口有关的动作时,也会产生窗口消息。窗口消息的一般的表示形式是以“WM_”开头的消息。常见的窗口消息如下所述。WM_CHAR:使用键盘时产生的消息。其对应的消息处理函数为OnChar(UINT nChar,UINT nRepCnt,UINT nFlags)。WM_CREATE:创建窗口时产生的消息,用于窗口的初始化。其对应的消息处理函数为OnCreate(LPCREATESTRUCT lpCreateStruct)。WM_PAINT:通知窗口对自身进行绘制。一般在移动窗口、改变窗口大小、绘制图形时使用。
22、其对应的消息处理函数为OnPaint()。1窗口消息WM_LBUTTONDOWM:使用鼠标左键时产生的消息。通知窗口单击了左键。其对应的消息处理函数为OnLButtonDown(UINT nFlags,CPoint point)。WM_MOUSEMOVE:移动鼠标时产生的消息。其对应的消息处理函数为OnMouseMove(UINT nFlags,CPoint point)。WM_CLOSE:关闭窗口时产生的消息。其对应的消息处理函数为OnClose()。WM_DESTROY:销毁窗口时产生的消息。其对应的消息处理函数为OnDestroy()。2命令消息命令消息一般与处理用户的某个请求或执行用户
23、的某个命令有关。一般通过选择菜单项、单击工具栏按钮和按加速键产生命令消息。在MFC应用程序中,凡是从基类CCmdTarget派生出来的子类,都能处理命令消息。另外,文档类、视图类和应用程序类都能处理命令消息。创建命令消息时,可以使用MFC Class Wizard建立消息映射和消息处理函数之间的关系。例如,应用程序类发出文件打开命令,假设打开文件对应的菜单资源ID为ID_FILE_IPEN,则其命令消息如下:3控件消息普通的控件都是子窗口,因为其都继承自CWnd。它们通过向其父窗口(一般为对话框)发关消息,响应用户的动作(如移动鼠标,单击等)。控件消息一般是由按钮(BN_)、编辑框(EN_)、
24、下拉列表框(LBN_)和组合框(CBN_)等控件产生的。其消息映射宏是在消息名前加上ON_,例如:第3章 C+语言基础要使用Visual C+进行Windows应用程序的开发,就要掌握面向对象的思想和C+语言。本章先讲述一个简单的C+程序,然后根据这个程序,向读者介绍C+中语言基础。3.2 C+的基本数据类型及数据数据类型是对数据的一种抽象描述。在计算机程序中能操作的数据有很多种,不同的数据所需要的存储空间有所不同。将数据按照类型进行分类,有助于程序员对于存储空间的分配。本节将具体介绍有关C+中的数据及其所属的数据类型。3.2.2 变量变量是一种特殊的标识符,在变量中可以存储数据。变量中存储的
25、数据可以根据程序的需要而改变,因此称为变量。1定义变量在C+中,使用一个变量必须先定义该变量。C+中定义变量的语法代码如下:定义一个变量需要说明两点,一是变量的类型,二是变量的名称。其中,变量的类型是C+中的数据类型。变量名是用户为变量起的名称。3.2.2 变量C+的变量名由字符及数字等组成。变量名必须满足以下几个条件。变量名只能由字母、数字和下划线(_)组成。变量名必须以字母或下划线开头。变量名不能包含空白字符(换行符、空格和制表符称为空白字符)。变量名不能与保留字名相同。变量名区分大小写。3.2.2 变量2变量赋值如果想要使用一个变量,就要为其进行赋值。如果没有对定义的变量赋值,Visua
展开阅读全文