COM特性
内容
!
!
!
!
!
复习:对象创建过程客户组件
创建实例对象
DllGetClassObject {
}
创建类厂对象
复习:TreeView组件的注册信息
Microsoft TreeView Control
C:\WINDOWS\SYSTEM\COMCTL32.OCX
COMCTL.TreeCtrl.1
{6B7E6392-850A-101B-AFC0-4210102A8DA7}
C:\WINDOWS\SYSTEM\COMCTL32.OCX
复习:类厂(Class Factory)
!
!
!
复习:类厂(续) !
字典组件IClassFactory
类厂
字典对象IDictionary
ISpellCheck
多对象、多类厂组件
类厂1
对象1
类厂2
对象2
复习:COM创建函数
!
!
!
!
复习:COM库
!
!
!
!
复习:实现一个进程内COM组件的步骤!
!
!
!
!
可重用性(reuse,复用)!
!
!
!
C++类的重用模型!
!
!
C++类的两种重用模型!
!
COM重用模型
!
!
!
COM 包容模型对象B
ISomeInterface 对象A
ISomeInterface
客户程序调用
调用
IOtherInterface
包容模型说明
!
!
!
!
!
聚合模型对象B
IOtherInterface
对象A
ISomeInterface 客户程序
调用
传递
调用
聚合模型说明
!
!
!
!
!
包容模型实现!
ISomeInterface , public IOtherInterface 包容:
外部对
象定义
HRESULT __stdcall SomeFunction( ) ;
HRESULT __stdcall OtherFunction( ) ;
HRESULT Init();
ISomeInterface *m_pSomeInterface;
包容:外部对象的实现
m_pSomeInterface = NULL;
if (m_pSomeInterface ! = NULL)
m_pSomeInterface->Release() ;
CB::Init()
HRESULT result = ::CoCreateInstance(CLSID_ComponentA, NULL, CLSCTX_INPROC_SERVER, IID_ISomeInterface,
(void **)&m_pSomeInterface) ;