理解使用CAA创建组件(Creating Components)

2014-07-16 21:53:19|?次阅读|上传:wustguangh【已有?条评论】发表评论

关键词:CAA, CATIA|来源:唯设编程网

使用CATBeginImplementClass宏替换了CATImplementClass宏。CATAddClassExtension宏用于添加一个适用于该扩展类的被扩展类,CATEdnImplementClass宏结束相关扩展系列的声明。

你在一个新类的源文件(.cpp)中按照如下方式声明一个已经存在的扩展:

ATSupportImplementation(ExtensionClassName,

                         MyClassName,

                         ImplementedInterface);

 

CATSupportImplementation宏允许已经存在的扩展添加到新类中。

什么是TIE和BOA?

在上面的代码实例中,当实现CATIData时使用到了如下的代码:

...

CATImplementClass(CAAEDataExtension, // Extension class name

                  DataExtension,     // Data extension

                  CATBaseUnknown,    // Base component - Always OM-derive TIE extensions from CATBaseUnknown

                  MyObject);         // Implementation class of the extended component

 

#include "TIE_CATIData.h"

TIE_CATIData(CAAEDataExtension);

...

 

下面来分析这些代码:

  • CATImplementClass宏在与类头文件中的CATDeclareClass宏共同使用,用于描述这个类是一个CAA V5对象模型组件的一部分。下面分别对它的4个参数进行介绍:

1. 类的名称。

2. CAA V5 对象模型类的类型。有效的值是Implementation,DataExtension和CodeExtension。

3. 组件OM派生所对应主类的名字,在如下情形有效:

  • Implementation类型的类
  • 使用BOA实现了一个接口的DataExtension类型的类

在如下情况无效:

  • 使用TIEs实例所有接口的DataExtension类型的类
  • CodeExtension类型的类

在最后两种情况中,这个参数应该被设置成CATBaseUnknown或者CATNull。

4. 如果类是一个扩展使用被扩展组件的名字,如果类是一个实现使用CATNull。

  • TIE_CATIData.h头文件的包含从CATIData接口创建时所创建的TIE_CATIData.tsrc文件生成。这个文件包含TIE_CATIData宏的代码。
  • 对TIE_CATIData宏的调用通常为TIE类创建代码。这个宏的参数是实现这个接口的类名。当从组件请求CATIData接口类型时,TIE类被实例化并通过QueryInterface返回一个指向该类的指针。
发表评论0条 】
网友评论(共?条评论)..
理解使用CAA创建组件(Creating Components)