书上只包含了实例代码的部分片段,因此在自己动手操作的时候碰到了不少问题。当然,借助了Src比较工具和MSDN,对整个Src实例有了进一步的理解。
IDispatch接口确实比较有意思,它可以把组件对象中的方法和属性暴露给客户。见下图
在BEGIN_DISPATCH_MAP与END_DISPATCH_MAP之间的DISP_XXXX宏则负责定义客户可以使用的方法或属性。
其中双引号中的字符串就是客户可以使用的属性名或方法名。dispidXXX是常量ID值(内部调用属性或方法的时候,用的是ID值,而不是属性或方法的字符串名称,你只要定义了这些宏,MFC会自动帮你处理,不用你去操心)。
组件通过IDispatch接口,将属性或方法暴露给客户后,需要在内部实现这些属性或方法。在dispidXXX后面的几个参数,就是组件内部的成员对象、成员函数、函数的参数类型、返回值类型等信息。有了这些信息,组件就知道用自己内部哪些成员对象、成员函数来负责处理暴露给客户的属性或方法了。
接下去,对于这些成员对象、成员函数来说。只需要我们通常的类的编写方式来实现就可以了。
以上是我对IDispatch的理解,如有不正,欢迎指摘。