EventApp对象模型

当前位置:首页>EventApp>EventApp对象模型

EventApp对象模型

## 2. COM 类层次结构


### 2.1 总体架构

```

┌─────────────────────────────────────────────────────────────────────────┐

│                          loquat.EventApp.dll                                                                                                                                     │

├─────────────────────────────────────────────────────────────────────────┤

│                                                                                                                                                                                              │

│  ┌─────────────────────────────────────────────────────────────────────┐    │

│  │                         EventApp (CoClass)                                                                                                                          │    │

│  │                      - 对象集合管理                                                                                                                                   │    │

│  │                      - 事件绑定入口                                                                                                                                   │    │

│  └─────────────────────────────────────────────────────────────────────┘    │

│                                                                         │                                                                                                                   │

│              ┌──────────────────────┼────────────────────┐                                                            │

│              ▼                                                        ▼                                                   ▼                                                            │

│  ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐                                       │

│  │            ObjectInfo               │ │             Interfaces                 │ │ EventInterfaces │               │                                       │

│  │           (对象信息)                │ │              (接口集合)               │ │  (事件接口集合) │               │                                      │

│  └─────────────────┘ └─────────────────┘ └─────────────────┘                                       │

│                                                                                                                                                                                              │

└─────────────────────────────────────────────────────────────────────────┘

```


### 2.2 EventApp 主类(ProgId=loquat.EventApp)

```

┌─────────────────────────────────────────────────────────────────────────────┐

│                              EventApp                                                                                                                                                          │

├─────────────────────────────────────────────────────────────────────────────┤

│  属性:                                                                                                                                                                                              │

│    Count                          - 已添加对象数量 (只读)                                                                                                                          │

│                                                                                                                                                                                                       │

│  集合方法:                                                                                                                                                                                     │

│    Add(Key, obj)                  - 添加后期绑定对象到EventApp里,返回ObjectInfo (Key不能重复)                                                 │

│    Item(KeyOrIndex) [默认]        - 返回 ObjectInfo (Index从1开始)           │

│    Remove(KeyOrIndex)             - 从EventApp移除对象                                 │

│    Clear()                        - 从EventApp清空所有对象                             │

│                                                                              │

│  独立方法:                                                                   │

│    CreateObjectEx(...)            - 从文件创建 COM 对象,同导出函数                      │

│    SetEventCallback(...)          - 绑定单个事件回调 (原生参数) ,同导出函数             │

│    SetGenericEventCallback(...)   - 绑定通用事件回调,同导出函数                         │

│    GetSignatures(...)             - 获取事件签名,同导出函数                             │

│    UnbindEvent(cookie)            - 解绑事件,同导出函数                                 │

│                                                                              │

│  事件源:                                                                     │

│    [source] IGenericEvents        - 通用事件接口                             │

└─────────────────────────────────────────────────────────────────────────────┘

```

### 2.3 ObjectInfo 类

```

┌─────────────────────────────────────────────────────────────────────────────┐

│                               ObjectInfo                                     │

├─────────────────────────────────────────────────────────────────────────────┤

│  属性:                                                                       │

│    Name                           - 对象原始 ClassName (只读)                │

│    Key                            - 添加时的 Key (只读)                      │

│    Index                          - 索引位置,序号 (只读)                          │

│    Object                         - 返回原始对象的引用                         │

│    Interfaces                     - 返回普通接口集合                         │

│    EventInterfaces             - 返回事件接口集合                         │

│    HelpInfo                       - 返回帮助信息对象                         │

│    CustDatas                      - 返回自定义数据集合                       │

│                                                                              │

│  方法:                                                                       │

│    Me / Self                      - 返回 ObjectInfo 自身                     │

└─────────────────────────────────────────────────────────────────────────────┘

```

### 2.4 Interfaces 集合


```

┌─────────────────────────────────────────────────────────────────────────────┐

│                              Interfaces          普通接口集合        │

├─────────────────────────────────────────────────────────────────────────────┤

│  属性:                                                                       │

│    Count                          - 接口数量 (只读)                          │

│                                                                              │

│  方法:                                                                       │

│    Item(KeyOrIndex) [默认]        - 返回 Interface (Index从1开始)            │

│    支持 For Each 遍历                                                        │

└─────────────────────────────────────────────────────────────────────────────┘

          │

          │ Item(KeyOrIndex)

          ▼

┌─────────────────────────────────────────────────────────────────────────────┐

│                               Interface         普通接口         │

├─────────────────────────────────────────────────────────────────────────────┤

│  属性:                                                                       │

│    Name                           - 接口名称                                 │

│    IID                            - 接口 GUID 字符串                         │

│    FlagValue                      - Flag 数值                                │

│    FlagName                       - Flag 名称 (多个用"|"分隔)                │

│    IsDefault                      - 是否 coclass 默认接口                    │

│    Members                        - 返回成员集合                             │

│    HelpInfo                       - 返回帮助信息对象                         │

│    CustDatas                      - 返回自定义数据集合                       │

└─────────────────────────────────────────────────────────────────────────────┘

```


### 2.5 Members 集合


```

┌─────────────────────────────────────────────────────────────────────────────┐

│                                Members                                       │

├─────────────────────────────────────────────────────────────────────────────┤

│  属性:                                                                       │

│    Count                          - 成员数量 (只读)                          │

│                                                                              │

│  方法:                                                                       │

│    Me / Self                      - 返回 Members 自身                        │

│    Item(KeyOrIndex) [默认]        - 返回 MemberInfo (Index从1开始)           │

│    Signatures(iType, [KeyOrIndex])- 返回签名 (VB6=0/C=1/JSON=2)             │

│    支持 For Each 遍历                                                        │

└─────────────────────────────────────────────────────────────────────────────┘

          │

          │ Item(KeyOrIndex)

          ▼

┌─────────────────────────────────────────────────────────────────────────────┐

│                              MemberInfo                                      │

├─────────────────────────────────────────────────────────────────────────────┤

│  属性:                                                                       │

│    Name                           - 成员名称                                 │

│    Address                        - vtable 真实地址 (指针)                   │

│    Index                          - vtable 偏移 (从0开始)                    │

│    DispId                         - Member ID                                │

│    InvokeKind                     - 调用类型 (Method/PropertyGet/Put/PutRef) │

│    InvokeKindName                 - 调用类型名称                             │

│    CallConv                       - 调用约定数值                             │

│    CallConvName                   - 调用约定名称                             │

│    ParamCount                     - 参数个数                                 │

│    ReturnTypeValue                - 返回类型数值                             │

│    ReturnTypeName                 - 返回类型名称                             │

│    Parameters                     - 返回参数集合                             │

│    HelpInfo                       - 返回帮助信息对象                         │

│    CustDatas                      - 返回自定义数据集合                       │

│                                                                              │

│  方法:                                                                       │

│    Me / Self                      - 返回 MemberInfo 自身                     │

│    Signature(iType)               - 本成员签名 (VB6=0/C=1/JSON=2)            │

└─────────────────────────────────────────────────────────────────────────────┘

```


### 2.6 EventInterfaces 集合


```

┌─────────────────────────────────────────────────────────────────────────────┐

│                           EventInterfaces                                    │

├─────────────────────────────────────────────────────────────────────────────┤

│  属性:                                                                       │

│    Count                          - 事件接口数量 (只读)                      │

│                                                                              │

│  方法:                                                                       │

│    Item(KeyOrIndex) [默认]        - 返回 EventInterface (Index从1开始)       │

│    支持 For Each 遍历                                                        │

└─────────────────────────────────────────────────────────────────────────────┘

          │

          │ Item(KeyOrIndex)

          ▼

┌─────────────────────────────────────────────────────────────────────────────┐

│                            EventInterface                                    │

├─────────────────────────────────────────────────────────────────────────────┤

│  属性:                                                                       │

│    Name                           - 事件接口名称                             │

│    IID                            - 事件接口 GUID 字符串                     │

│    FlagValue                      - Flag 数值                                │

│    FlagName                       - Flag 名称                                │

│    IsDefault                      - 是否默认事件接口                         │

│    Events                         - 返回事件成员集合                         │

│    HelpInfo                       - 返回帮助信息对象                         │

│    CustDatas                      - 返回自定义数据集合                       │

└─────────────────────────────────────────────────────────────────────────────┘

```


### 2.7 Events 集合


```

┌─────────────────────────────────────────────────────────────────────────────┐

│                                Events                                        │

├─────────────────────────────────────────────────────────────────────────────┤

│  属性:                                                                       │

│    Count                          - 事件数量 (只读)                          │

│                                                                              │

│  方法:                                                                       │

│    Me / Self                      - 返回 Events 自身                         │

│    Item(KeyOrIndex) [默认]        - 返回 EventInfo (Index从1开始)            │

│    Signatures(iType, [KeyOrIndex])- 返回事件签名                             │

│    SetGenericEventCallback(...)   - 绑定所有事件 (JSON 格式)(返回 Cookie)    │

│    Advise()                       - 绑定所有事件到 OnEventAll (返回 Cookie)  │

│    UnAdvise(Cookie)               - 解绑 OnEventAll                          │

│    支持 For Each 遍历                                                        │

│                                                                              │

│  事件源:                                                                     │

│    [source] IEventsEvent          - 包含 OnEventAll 事件                     │

└─────────────────────────────────────────────────────────────────────────────┘

          │

          │ Item(KeyOrIndex)

          ▼

┌─────────────────────────────────────────────────────────────────────────────┐

│                               EventInfo                                      │

├─────────────────────────────────────────────────────────────────────────────┤

│  属性:                                                                       │

│    Name                           - 事件名称                                 │

│    Address                        - vtable 真实地址 (指针)                   │

│    Index                          - vtable 偏移 (从0开始)                    │

│    DispId                         - 事件 ID                                  │

│    CallConv                       - 调用约定数值                             │

│    CallConvName                   - 调用约定名称                             │

│    ParamCount                     - 参数个数                                 │

│    ReturnTypeValue                - 返回类型数值                             │

│    ReturnTypeName                 - 返回类型名称                             │

│    Parameters                     - 返回参数集合                             │

│    HelpInfo                       - 返回帮助信息对象                         │

│    CustDatas                      - 返回自定义数据集合                       │

│                                                                              │

│  方法:                                                                       │

│    Me / Self                      - 返回 EventInfo 自身                      │

│    Signature(iType)               - 本事件签名                               │

│    Advise()                       - 绑定本事件到 OnEventOne (返回 Cookie)    │

│    UnAdvise(Cookie)               - 解绑 OnEventOne                          │

│                                                                              │

│  事件源:                                                                     │

│    [source] IEventInfoEvent       - 包含 OnEventOne 事件                     │

└─────────────────────────────────────────────────────────────────────────────┘

```


方便理解的简化对象模型

EventApp

----ObjectInfo

--------Interfaces

------------Interface

----------------Members

--------------------MemberInfo

------------------------Parameters

----------------------------ParameterInfo

--------EventInterfaces

------------EventInterface

----------------Events

--------------------EventInfo

------------------------Parameters

----------------------------ParameterInfo