作量也随着增高,目前使用这种编程方式的用户已经很少;另一种是基于MFC的C++编程方式,虽然其代码运行效率相对较低,但开发难度小、开发工作量小、源代码效率高,已经成为Visual C++ 开发Windows应用程序的主流。
Visual C++ 6.0具有一些其他可视化集成开发软件所不具备的特性。简单地说,其具有的优点主要如下。
* 语法符合ANSI C++标准,并在此基础上针对Windows操作系统增加了一些语句。
* 提供了面向对象的应用程序框架MFC(Microsoft Foundation Class,微软基础类库)。简化了程序员的编程工作,提高了模块的可重用性。
* 提供了基于CASE技术的可视化软件的自动生成和维护工具Application Wizard、ClassWizard、Visual Studio、WizardBar等。实现了直观、可视的程序设计风格,使用户可以方便地管理各种类和轻松维护程序的源代码。
* 封装了Windows的API函数、USER、KERNEL、GDI等函数。简化了编程时创建、维护窗口的许多复杂工作。
第二章 实现方法分析
MATLAB在科学研究与工业技术开发方面有着极为广泛的应用,但这并不意味着在解决实际问题时,MATLAB总是无往不胜。事实上,在某些情况下,完全使用MATLAB作为开发工具,虽然能够完成任务,但它并不是最佳手段。幸运的是,MATLAB提供的灵活而又强大的接口技术实现了MATLAB与C/C++混合编程的多种方法,从而可实现MATLAB图像嵌入VC++界面的要求。
本章主要内容包括:
* MATLAB混合编程的优点;
* MATLAB应用程序接口概述;
* 实现方法分析;
2.1 MATLAB混合编程的优点
下面介绍利用MATLAB混合编程的优点。
1)代码重用
代码重用是每个软件开发人员都努力争取的目的之一。对于一个机构,甚至是对科研人员来说,在长期的研究和开发过程中,已经积累了相当数量的代码。这些代码大多数已经在以往的课题研究实践中被证实能够正确完成其设计功能。能否在现在或将来的开发过程中利用这些已有的成果显得非常重要。MATLAB的接口结束提供了和其他主要的编程语言(比如C/C++、Fortran等)相互调用的机制,将有助于开发过程的代码重用。
2)合理使用开发组资源
软件开发的另一个目标是快速完成开发任务。对于一些复杂应用程序的开发,往往需要一个团队的高度合作。团队成员的专业背景以及技术长处可能各不相同,如果团队领导者在初期制定技术方案时能否考虑到各个开发人员的技术长处,根据实际问题以及各种编程语言、工具的特点,合理定制开发方案,无疑将会加速整个开发过程,而且也更有可能开发出高效的软件。MATLAB的接口技术给开发者提供了许多个其他编程语言交互的使用途径,将有助于人们制定和实施高效的开发方案。
3)方便发布
传统的MATLAB应用软件多以一个或多个M文件组成,客户必须先安装MATLAB系统才能够使用这些应用程序,这样并不是很方便。MATLAB的接口技术给开发者提供了多种实用的应用软件发布手段。利用MATLAB的接口技术,这些应用软件可以通过动态链接库(*.dll)、可执行文件(*.exe)、COM对象(*.dll或*.exe)等形式发布,这将有助于缩短产品从开发到推向市场所需的时间。
4)提高程序运行效率
相比于其他需要编译的编程语言,比如C/C++来说,MATLAB能够缩短开发时间。这主要得益于MATLAB所提供的丰富的矩阵运算功能,涵盖多个科技领域的工具箱,以及强大的图形显示功能等,MATLAB特别适合于开发小型应用,或者对算法的验证与开发。然而对于一些大型、复杂的应用程序来说,完全使用MATLAB开发的程序可能在执行时显得太慢。通过在Visual C++中调用MATLAB的M文件或动态链接库文件,可有效的提高程序运行效率。
2.2 MATLAB应用程序接口概述
对外部程序的编程接口是从MATLAB5.0就开始出现的。在这些接口技术中有一个功能比较重要,那就是如何把MATLAB程序转换成C/C++代码。这个功能是由MATLAB编译器来实现的。在接口技术的初期阶段,MATLAB编译器的性能并不是特别突出,产生的C/C++代码的执行效率没有市场上同类产品的效率高。MATLAB当时在市场上的另一个竞争者MATCOM,是当时美国Mathtools公司的一个软件产品。MATCOM的核心技术是Matrix。这是一个用C++写成的高效矩阵数学运算函数库。MATCOM完全兼容MATLAB5.x,它的功能是把MATLAB的数转换成C/C++代码。生成的代码质量来看,当时的MATCOM要优于MATLAB编译器,而且,Mathtools公司当时还有另外一个和MATLAB有关的软件叫做Mideva,它能够解释执行MATLAB程序,也能够结合MATCOM方便地把MATLAB程序转换成C/C++代码,或者进而编译成可以再其他编程语言中使用的DLL文件,甚至可以直接把MATLAB代码编译成Windows可执行文件。
后来,MathWorks公司收购了Mathtools公司,Mathtools公司的创建者以及一些技术人员也同时加入了MathWorks公司,这大大加强了MathWorks公司在开发MATLAB编译器方面的技术力量。如今,MATLAB7.1版本中,MATLAB给用户提供了非常丰富的接口技术,包括和其他语言程序的接口,在不同程序之间共享数据的接口,基于微软组件技术或者DDE的客户端/服务器通信接口,以及直接从MATLAB环境到计算机外围设备的通信接口。具体来说,实现MATLAB图像嵌入VC++的接口技术包括如下几方面的内容。
2.3实现方法分析
在MATLAB提供的多种与VC++混合编程技术中,能够实现MATLAB图像嵌入VC++界面的方法有如下几种。
2.3.1 使用ActiveX控件实现
ActiveX是一种支持多组件集成的Microsoft Windows协议,通过ActiveX技术可以将不同环境下开发的组件集成到一个应用程序中。ActiveX同时是面向对象技术的一种,属于基于组件对象模型(COM)的子类。COM为所有的ActiveX对象定义了对象模型,每个ActiveX对象支持一定得接口,也就是不同的方法、属性和事件。
MATLAB支持两种ActiveX技术:ActiveX控制器和ActiveX Automation。ActiveX控制器可以将不同的ActiveX控制在一个应用中,而ActiveX Automation是一种允许一个应用程序(客户端)去控制另一个应用程序(服务器端)的协议。因此,它允许MATLAB控制其他ActiveX组件,或者被其它ActiveX所控制。当MATLAB控制其他ActiveX组件时,MATLAB作为一个Automation Client;当MATLAB被其他ActiveX控件控制时,MATLAB就是一个Automation Server。
2.3.2 使用Mideva工具实现
Mideva是Mathtools公司推出的一种MATLAB编译开发软件平台,提供对MATLAB程序文件(M文件)的解释执行和开发环境支持。
Mideva是一个集成的调试编辑环境,提供了比MATLAB更强大的编辑、调试功能,如语法突出显示、批量注释等。而Matcom是Mideva的内核,它是一个基于C++矩阵函数库Matrix的一个MATLAB M文件与CPP文件的转换程序。
Matcom的不足之处在于对struct等类的支持有缺陷,而且部分绘图语句无法实现或得不到准确图像,尤其是三维图像。因此,在不涉及三维绘图以及M文件太大的情况下适合使用。
2.3.3 基于COM组件的窗口嵌入方式实现
Windows系统中所有应用程序的窗口都是基于MFC类库中CWnd类的,CWnd类有3个对操作窗口的函数:FindWindows、SetWindowsPos和SetParent,其中FindWindows可以寻找到Windows系统中指定名称的窗口;SetWindowsPos能把窗口移动到指定的位置;而SetParent函数可以改变窗口的父窗口。利用这3条命令的组合,从理论上讲可以将系统中任何一个窗口变成另一个窗口的子窗口并"嵌入"到其中。
2.3.4 利用COM的统一数据传输机制方法实现
上一篇:
Biobran酒店管理系统毕业论文(2003doc)
下一篇:
采用VC的伺服电机控制毕业论文(2003doc)