就像其它工厂,如生产汽车的工厂,可以生产汽车。类厂是另外一种类型的工厂,在这种“工厂”中我们可以制造出所需的组件,这种工厂被称作是类厂。类厂实际上也是一个组件。
创建组件最简单的办法是使用CoCreateInstance,使用的也最多。但有时不够灵活。
CoCreateInstance实际上并没有直接创建COM组件,而是创建了一个类厂组件。类厂组件的唯一功能就是创建其它的组件。
类厂的一个实例只能创建同某个CLSID响应的组件。
与某个特定CLSID相应的类厂是由实现组件的开发人员实现的。大多数情况下,类厂组件包含在它所创建的组件相同的DLL中。
1. 创建类厂本身
使用COM库函数CoGetClassObject。它返回指向所需组件的类厂而不是指向组件本身的一个指针。
2. 通过上一步返回的指针(通常是IClassFactory指针)创建所需的组件。