本帖最后由 小聪哥 于 2016-11-28 21:33 编辑
3.2 COM 技术概述 一个应用程序,通常是由单个的二进制文件组成的。当编译器生成此应用程序之后,在对下一版本重新编译并发行新生成的版本之前,应用程序一般不会发生任何变化,但操作系统、硬件及客户需求一直处于动态的改变的过程中,要修改应用程序的话,必须等到整个应用程序被重新编译之后才能得以认可。 因此软件不应保持那种静止的状态,开发人员应该找出一种方法,能够给已经发行的软件不断地注入新的活力。这种解决方案就是将单个的应用程序分隔成多个独立的部分,也就是组件。
一个组件同微型应用程序类似,即都是已经编译、链接好并可以使用的了,应用程序就是由多个这样的组件打包得到的。各定制的组件可以在运行时同其他组件连接起来,以构成某个应用程序,在需要对应用程序进行修改或改进时,只需将构成此应用程序的组件中的某个新的版本替换掉即可。
而将应用程序拆分成组件需要一个工具,微软则称这个工具为COM。COM,即组件对象模型,它是关于如何建立组件以及如何通过组件构建应用程序的一个规范。 为了使组件能够动态地插入或卸出应用程序,它必须满足两个条件:
[*]第一,组件必须动态链接
[*]第二,他们必须隐藏(或封装)其内部实现细节
在Windows平台上,一个COM组件可以是一个动态链接库(DLL),也有可能是一个可执行程序(EXE)。基于COM标准,可以开发不同的COM对象,而对象以接口的形式提供服务。 COM对象是组件对象类的实例,COM要求对象具有完全的封装特性,避免对象的数据或方法被直接使用。COM接口是提供访问对象的方法、属性的手段,它通常聚合了一组相关的方法(函数)。 在COM组件中,接口是最关键的,对客户端来说,一个组件就相当于一个接口集。客户端只能通过接口才能够跟组件打交道。我们不必知道,组件的所有接口。对于LightTools来说,API 就是这样的接口,而我们正是用这些接口来进行交互设计。3.3 API 函数 前面说过,API 是指一组函数,我们把 LightTools 中的 API 函数进行分类,主要有以下几类:
[*]通用函数(General Utility Functions)
[*]数据访问函数(Data Access Functions)
[*]特殊过程函数( Special Processing Functions)
[*]视图访问函数 (View Access Functions)
对于其详细的说明、语法及示例请参考相应的帮助文档,在这里就不细细罗列了。需要提醒的是,对于数据访问函数同样需要前面介绍宏语言时讲到的层次结构和 Filter 的概念。3.4 LightTools JumpStart 函数库 LightTools JumpStart 函数库,是使用Visual Basic 6.0 语言编写且已被编译过的一个动态链接库(LTCOM64.dll),用于进行照明设计、构建几何图形和仿真分析等操作。基于它们各自的功能将 JumpStart 函数分类。这些类是︰
[*]Geometry(几何体) 建立立体几何体,非球面透镜
[*]Math(数学) 常见的数学函数库
[*]Mesh(网格) 读取、存储和分析仿真数据的函数
[*]Properties(属性) 设置物体光学属性和材料属性的函数
[*]Receiver(接收器) 设置照明分析的接收器
[*]Sources(光源) 设置简单光源和复杂形状光源的函数
[*]Transform(变换) 阵列,移动,旋转和转换实体的函数
[*]Texture(结构) 用来创建2D 和 3D 纹理图案(如点、鼓包等)
[*]Utility(实用) 常见的LightTools 实用函数;被大多数JumpStart函数调用
3.5 参考 LightTools API 的帮助文档