《第2章VC++开发基础.ppt》由会员分享,可在线阅读,更多相关《第2章VC++开发基础.ppt(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第2 2章章 VC+VC+开发基础开发基础使用使用VC+和和MATLAB进行混合编程时,涉及到的进行混合编程时,涉及到的VC+编编程方面的知识较多,包括程方面的知识较多,包括C+面向对象程序设计、面向对象程序设计、C+异异常处理机制等常处理机制等C+编程基础知识;编程基础知识;Windows程序内部运行程序内部运行机制、动态链接库基础等机制、动态链接库基础等Windows编程基础知识;编程基础知识;MFC框架程序、框架程序、ActiveX控件等开发知识,另外也需要掌握控件等开发知识,另外也需要掌握VC+程序的调试和优化方面的知识。只要掌握了这些知程序的调试和优化方面的知识。只要掌握了这些知识
2、,才能在混合编程中更好的发挥出识,才能在混合编程中更好的发挥出VC+的技术优势。的技术优势。2.1 C+2.1 C+面向对象程序设计面向对象程序设计C+是一种面向对象程序设计语言,目前在工程中得到了广是一种面向对象程序设计语言,目前在工程中得到了广泛应用。本节主要介绍面向对象的语言和方法、类,对象泛应用。本节主要介绍面向对象的语言和方法、类,对象和消息等基本概念、和消息等基本概念、C+面向对象程序设计特点以及实现面向对象程序设计特点以及实现方式等内容。方式等内容。2.1.1 2.1.1 面向对象语言和方法面向对象语言和方法面向对象语言(面向对象语言(Object-Oriented Langua
3、ge,OOL)是以对象)是以对象作为核心的程序设计语言,通过对象的描述和实现来实现作为核心的程序设计语言,通过对象的描述和实现来实现程序。其核心思想包括类、对象、继承等概念的定义和描程序。其核心思想包括类、对象、继承等概念的定义和描述。述。OOL与面向过程的编程语言的重要区别在于,能够与面向过程的编程语言的重要区别在于,能够直接地描述客观世界中的对象以及对象之间的关系。直接地描述客观世界中的对象以及对象之间的关系。2.1.2 2.1.2 类,对象和消息类,对象和消息本节将介绍本节将介绍OOL的几个重要概念。包括对象、类、封装、继的几个重要概念。包括对象、类、封装、继承、消息等,不同类型的承、消
4、息等,不同类型的OOL都会涉及到这些概念的全都会涉及到这些概念的全部或者部分。部或者部分。2.2 C+2.2 C+异常处理机制异常处理机制C+具有很强的纠错能力,具有较完善的异常处理机制。具有很强的纠错能力,具有较完善的异常处理机制。C+的异常情况主要包括语法错误和运行错误,语法错误的异常情况主要包括语法错误和运行错误,语法错误就是程序中出现了不正确的语句,函数和类的定义等问题,就是程序中出现了不正确的语句,函数和类的定义等问题,导致编译程序无法进行,一些支持导致编译程序无法进行,一些支持C+的开发工具如的开发工具如VC+会给出提示信息,用户可以根据信息给出的错误码会给出提示信息,用户可以根据
5、信息给出的错误码和位置修改相应的程序代码。运行错误是指程序运行时发和位置修改相应的程序代码。运行错误是指程序运行时发生的错误,通常与功能算法有关,比语法错误更难发现和生的错误,通常与功能算法有关,比语法错误更难发现和解决。解决。2.2.1 2.2.1 错误和异常错误和异常很多编程语言中没有严格区别错误和异常,但实际上从编程很多编程语言中没有严格区别错误和异常,但实际上从编程角度出发,两者的意义和结果是完全不同的。角度出发,两者的意义和结果是完全不同的。根据根据美国美国传统字典传统字典的定义,错误是指的定义,错误是指“背离公认代码行为的操作背离公认代码行为的操作或者实例或者实例”。异常的定义是在
6、程序执行过程中发生的中断。异常的定义是在程序执行过程中发生的中断指令正确流程的事件。指令正确流程的事件。2.2.2 2.2.2 异常处理的机制和实现异常处理的机制和实现异常处理机制是指编程语言和环境提供的用来有效地处理运异常处理机制是指编程语言和环境提供的用来有效地处理运行错误的工具。行错误的工具。C+异常处理机制非常强大且灵活,除了异常处理机制非常强大且灵活,除了try-catch-throw机制外,还提供了机制外,还提供了assert()和和trace()等异常等异常定位和追踪函数帮助进行异常处理。定位和追踪函数帮助进行异常处理。try-catch-throw机制机制是指异常处理结果由检查
7、(是指异常处理结果由检查(try)、抛出()、抛出(throw)和捕捉)和捕捉(catch)三个部分组成。需要检测的语句放在)三个部分组成。需要检测的语句放在try块中,块中,throw用来当出现异常时抛出一个异常信息,而用来当出现异常时抛出一个异常信息,而catch则用则用来捕捉异常信息,如果捕捉到异常信息,就进行处理。来捕捉异常信息,如果捕捉到异常信息,就进行处理。2.2.32.2.3 VC+VC+异常处理异常处理VC+提供了对提供了对C语言、语言、C+语言和语言和MFC的异常(的异常(exception)处理。其中处理。其中MFC的异常处理只支持的异常处理只支持C+。另外,微软公。另外,
8、微软公司对司对C和和C+语言的异常处理进行了扩展,使用结构化异语言的异常处理进行了扩展,使用结构化异常处理机制,结构化异常处理(常处理机制,结构化异常处理(Structured Exception Handling,简称,简称SEH)机制支持)机制支持C和和C+。2.3 Windows2.3 Windows程序内部运行机制程序内部运行机制Windows程序内部运行机制是开发程序内部运行机制是开发Windows应用程序的基础,应用程序的基础,主要包括如何使用应用程序接口主要包括如何使用应用程序接口API(Application Programming Interface)与)与软件软件开发工具包
9、开发工具包Software Development Kit(SDK)等接口进行应用程序开发,还)等接口进行应用程序开发,还包括窗口与句柄的控制和试验,消息的处理等内容。包括窗口与句柄的控制和试验,消息的处理等内容。2.3.1 API2.3.1 API与与SDKSDK应用程序接口应用程序接口API和和软件软件开发工具包开发工具包SDK是开发是开发 Windows 应应用程序的基础,其它用程序的基础,其它MFC编程框架和类库等都是建立在编程框架和类库等都是建立在它们之上。它们之上。2.3.2 2.3.2 窗口与句柄窗口与句柄窗口是窗口是Windows应用程序与用户进行交互的接口,从物理上应用程序与
10、用户进行交互的接口,从物理上看是计算机屏幕上的一块矩形区域。在窗口中根据应用程看是计算机屏幕上的一块矩形区域。在窗口中根据应用程序的功能提供了相应控件,用户根据功能要求进行相应的序的功能提供了相应控件,用户根据功能要求进行相应的操作。对于可视化的操作。对于可视化的Windows应用程序,应该至少要有一应用程序,应该至少要有一个称为主窗口的窗口,即个称为主窗口的窗口,即VC+MFC中的基于对话框程中的基于对话框程序中的主对话框。序中的主对话框。2.3.3 2.3.3 消息与消息队列消息与消息队列Windows的应用程序是消息驱动的。等待的应用程序是消息驱动的。等待Windows向它们传向它们传递
11、输入信息,在获得输入信息后,系统把应用程序的输入递输入信息,在获得输入信息后,系统把应用程序的输入信息传递给各个窗口的消息处理函数。该函数负责处理各信息传递给各个窗口的消息处理函数。该函数负责处理各种用户输入,处理完成后再将控制权交还给系统。种用户输入,处理完成后再将控制权交还给系统。2.4 2.4 动态链接库基础动态链接库基础动态链接库(动态链接库(Dynamic Link Library,DLL)是一种可执行)是一种可执行文文件的格式件的格式,是具有某些特定功能的函数和类的目标代码集,是具有某些特定功能的函数和类的目标代码集合,用户可以根据需要自己开发或者使用别人提供的合,用户可以根据需要
12、自己开发或者使用别人提供的DLL。跟扩展名为。跟扩展名为exe的可执行文件不同,的可执行文件不同,DLL 文件不能文件不能直接执行,但是可以由直接执行,但是可以由.exe 或者上一级或者上一级DLL在执行时加在执行时加载运行,执行相应的功能。在系统执行某些功能时,将相载运行,执行相应的功能。在系统执行某些功能时,将相应的应的DLL文件调入系统内存进行解析执行。文件调入系统内存进行解析执行。2.4.1 DLL2.4.1 DLL与进程的地址空间与进程的地址空间为了使用为了使用DLL 中的中的 API 函数,必须在应用程序中提供函数,必须在应用程序中提供API 函数的声明文件(函数的声明文件(.h)
13、和)和库库文件(文件(.lib)。为了能够正确)。为了能够正确定位到相应的定位到相应的API函数,需要导入库,这样在调用的函数,需要导入库,这样在调用的 DLL文件中就可以找到对应文件中就可以找到对应 API函数的入口点。函数的入口点。2.4.2 DLL2.4.2 DLL分类分类链接库分为静态链接库和动态链接库两种。静态链接库是指链接库分为静态链接库和动态链接库两种。静态链接库是指提供功能函数的目标代码,若应用程序调用链接库中的某提供功能函数的目标代码,若应用程序调用链接库中的某个函数,则在程序的编译和链接阶段,将链接库中被调用个函数,则在程序的编译和链接阶段,将链接库中被调用函数的目标代码复
14、制链接到运行文件中。函数的目标代码复制链接到运行文件中。2.4.3 2.4.3 创建创建DLLDLL模块模块当一个应用程序需要用到一个当一个应用程序需要用到一个DLL中的相关函数时,会涉及中的相关函数时,会涉及到很多文件和组件。一个可执行模块需要从另一个到很多文件和组件。一个可执行模块需要从另一个DLL模模块中导入函数和变量,那么首先必须需要构建该块中导入函数和变量,那么首先必须需要构建该DLL模块模块,然后才能构建该可执行模块。,然后才能构建该可执行模块。2.5 VC+2.5 VC+程序编译链接的原理与过程程序编译链接的原理与过程本节将简要介绍本节将简要介绍VC+程序编译链接的原理与过程。主
15、要介程序编译链接的原理与过程。主要介绍程序设计编译原理和绍程序设计编译原理和VC+程序编译链接过程,掌握编程序编译链接过程,掌握编译链接的原理与过程,将有助于编写性能更高的程序。译链接的原理与过程,将有助于编写性能更高的程序。2.5.1 2.5.1 程序设计编译原理程序设计编译原理程序设计的编译主要是依靠编译程序和编译系统完成的。编程序设计的编译主要是依靠编译程序和编译系统完成的。编译程序是指将用译程序是指将用C/C+等高级语言编写的源程序翻译转换等高级语言编写的源程序翻译转换成功能等价的机器低级语言的计算机处理程序,如图成功能等价的机器低级语言的计算机处理程序,如图2.9所示。编译系统指是编
16、译程序和运行系统的组合。所示。编译系统指是编译程序和运行系统的组合。2.5.2 VC+2.5.2 VC+程序编译链接过程程序编译链接过程在在VC+可视化程序开发环境中,可执行程序的生成,主要可视化程序开发环境中,可执行程序的生成,主要包括编译过程(包括编译过程(Compiling)和链接过程()和链接过程(Linking)等两)等两个过程。个过程。2.6 MFC2.6 MFC框架程序框架程序MFC框架程序是框架程序是VC+的一个重要组成部分,很多应用程序的一个重要组成部分,很多应用程序都是基于都是基于MFC框架开发的,使用框架开发的,使用MFC程序开发模板向导,程序开发模板向导,可以自动建立灵
17、活的应用程序框架。本节将介绍可以自动建立灵活的应用程序框架。本节将介绍MFC AppWizard的使用方法,并对基于的使用方法,并对基于MFC的程序框架进行的程序框架进行分析说明。分析说明。2.6.1 MFC AppWizard2.6.1 MFC AppWizardMFC AppWizard是是VC+提供的生成程序框架的向导工具,提供的生成程序框架的向导工具,使用它可以帮助自动生成基于使用它可以帮助自动生成基于MFC框架的应用程序。下框架的应用程序。下面介绍如何使用面介绍如何使用MFC AppWizard,创建一个基于,创建一个基于MFC的的多文档界面(多文档界面(MDI)应用程序示例)应用程
18、序示例MultiDocumentPro。2.6.2 2.6.2 基于基于MFCMFC的程序框架剖析的程序框架剖析MFC封装了封装了C+基础类库,封装了基础类库,封装了Windows API 函数的绝函数的绝大多部分功能。大多部分功能。MFC专门用于专门用于 Windows 平台上的编程。平台上的编程。为了更好地理解为了更好地理解MFC的工作机理,首先需要了解的工作机理,首先需要了解Windows MFC类的继承结构。类的继承结构。2.7 ActiveX2.7 ActiveX控件控件ActiveX是是Microsoft公司对于一系列策略性面向对象程序技公司对于一系列策略性面向对象程序技术和工具的
19、总成,可以方便地被应用程序调用,实现相应术和工具的总成,可以方便地被应用程序调用,实现相应功能。本节将介绍功能。本节将介绍ActiveX控件的分类和应用。控件的分类和应用。2.7.1 2.7.1 概述概述ActiveX包括了一系列策略性面向对象程序技术和工具,它包括了一系列策略性面向对象程序技术和工具,它是一个开放的集成平台,包括是一个开放的集成平台,包括ActiveX插件插件、ActiveX文档文档和和ActiveX 脚本等。脚本等。ActiveX插件以前也叫做插件以前也叫做OLE控件或控件或OCX控件,包括一些软件组件或对象,可以将其插入控件,包括一些软件组件或对象,可以将其插入应应用程序
20、用程序或者或者WEB网页,在运行时候调用。网页,在运行时候调用。2.7.2 ActiveX2.7.2 ActiveX控件分类控件分类根据根据ActiveX控件在程序中的作用,控件在程序中的作用,ActiveX控件包括自动化控件包括自动化控制器、自动化服务器、控制器、自动化服务器、ActiveX文档文档、控件和、控件和ActiveX容容器等几种类型器等几种类型2.7.3 ActiveX2.7.3 ActiveX控件应用控件应用作为一种可重用的作为一种可重用的软件组件软件组件,通过使用,通过使用 ActiveX控件,可以控件,可以很快地在本地客户端应用程序、网页、开发工具等不同应很快地在本地客户端
21、应用程序、网页、开发工具等不同应用中加入特殊的功能。目前,已有用中加入特殊的功能。目前,已有2000多个商用多个商用ActiveX控件,开发控件,开发ActiveX控件可以使用控件可以使用VB,C/C+,Java和和C#等多种编程语言。等多种编程语言。2.8 VC+2.8 VC+程序的调试和优化程序的调试和优化程序调试阶段可以说是整个程序开发中最重要的阶段,经过程序调试阶段可以说是整个程序开发中最重要的阶段,经过调试和优化的程序才可以提交给用户使用。本节将介绍调试和优化的程序才可以提交给用户使用。本节将介绍VC+程序的调试和优化的内容和方法。程序的调试和优化的内容和方法。2.8.1 VC+2.
22、8.1 VC+程序调试方法和过程程序调试方法和过程在使用在使用MFC建立了建立了VC+框架程序后,根据功能要求添加各框架程序后,根据功能要求添加各类资源(包括菜单和对话框及其控件等),实现消息映射,类资源(包括菜单和对话框及其控件等),实现消息映射,添加功能代码后,就到了程序的编译调试阶段,程序调试添加功能代码后,就到了程序的编译调试阶段,程序调试阶段可以说是整个程序开发中最重要的阶段,也是最耗费阶段可以说是整个程序开发中最重要的阶段,也是最耗费时间和精力的阶段。时间和精力的阶段。2.8.2 VC+2.8.2 VC+程序优化程序优化 程序优化从理论上说包括性能分析理论,如何提高算法的效程序优化从理论上说包括性能分析理论,如何提高算法的效率等方面,从实践上则需要从流程、算法实现和数据结构、率等方面,从实践上则需要从流程、算法实现和数据结构、变量等方面进行考虑。本节主要介绍一些常用的优化变量等方面进行考虑。本节主要介绍一些常用的优化C/C+代码的方法。代码的方法。